Rechercher : dans
Par :

[Shell] Nombre de fichiers

Dernière réponse le 5 mai 2007 à 23:45:54 xavdoug, le 27 avr 2007 à 16:32:50 
 Signaler ce message aux modérateurs

Bonjour,

Voilà mon problème.
J'ai dans un repertoire des fichiers, par exemple :
fichier23.txt, fichier.24.txt, fichier25.txt, ..., fichier234.txt

Je voudrais récupérer le premier nombre (ici 23), le dernier (ici 234) et vérifier que la suite n'est pas interrompue ...
Le tout en c-shell ...

Y aurait-il une ame charitable pour m'aider ?
Merci d'avance

Configuration: Windows XP
Internet Explorer 7.0

Meilleures réponses pour « [Shell] Nombre de fichiers » dans :
Comment lire un fichier ligne par ligne VoirComment lire un fichier ligne par ligne Préambule Boucle while Syntaxe Exemple Astuces Bonus Boucle for Syntaxe Préambule Une des erreurs les plus communes dans l'apprentissage des scripts "bash" sous GNU/LInux pour lire un fichier...
Cacher un fichier ou dossier sous Linux VoirPour cacher un fichier ou un répertoire sous Linux, il suffit de faire précéder son nom d'un point (.). Par exemple : .bash_history .bash_profile .ssh Notez qu'en faisant celà vous ne cachez pas réellement les fichiers car en utilisant l'option...
Télécharger Streamripper VoirDe nombreux fichiers audio circulent sur Internet en streaming surtout via les radios internet. Alors pour en profiter au maximum enregistrez cette musique diffusée en continu. Streamripper permet l'enregistrement des flux audio diffusés sur...
Linux - Le shell VoirIntroduction au shell L'interpréteur de commandes est l'interface entre l'utilisateur et le système d'exploitation, d'où son nom anglais «shell», qui signifie «coquille». Le shell est ainsi chargé de faire l'intermédiaire le système...
Commandes UNIX VoirTableau des principales commandes UNIX Commande Unix Description Options ls liste le contenu d'un répertoire -a Affiche tous les fichiers, y compris les fichiers cachés ...

1

jipicy, le 27 avr 2007 à 23:13:35

Salut,

C'est pour du shell "bash", à adapter pour du shell "csh" :

#! /bin/bash

min=$(ls *.txt | grep -o '[0-9][0-9]*' | head -1)
max=$(ls *.txt | grep -o '[0-9][0-9]*' | tail -1)
j="$min"

for i in $( ls *.txt | grep -o '[0-9][0-9]*')
do
if [ "$i" != "$j" ]
then
echo "Chaîne interrompue au fichier n° $j."
exit 2
else
echo "Fichier n° $i => OK"
fi
j=$(expr $j + 1)
done
;-))
Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.

Répondre à jipicy

2

jipicy, le 28 avr 2007 à 15:28:39

Le même en "csh" ;-))

#! /bin/csh

set min = `ls *.txt | grep -o '[0-9][0-9]*' | head -1`
set max = `ls *.txt | grep -o '[0-9][0-9]*' | tail -1`
set j = "$min"

foreach i ( `ls *.txt | grep -o '[0-9][0-9]*'` )
if ("$i" != "$j") then
	echo "Chaîne interrompue au fichier n° $j."
	exit 2
else
	echo "Fichier n° $i => OK"
endif

@ j++
end
Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.

Répondre à jipicy

3

 xavdoug, le 5 mai 2007 à 23:45:54

Merci beaucoup.
C'est un problème entièrement résolu !
Impeccable !!

:))

Répondre à xavdoug