[Shell] Nombre de fichiers

Résolu/Fermé
xavdoug Messages postés 21 Date d'inscription samedi 21 avril 2007 Statut Membre Dernière intervention 16 novembre 2007 - 27 avril 2007 à 16:32
xavdoug Messages postés 21 Date d'inscription samedi 21 avril 2007 Statut Membre Dernière intervention 16 novembre 2007 - 5 mai 2007 à 23:45
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
A voir également:

3 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 896
27 avril 2007 à 23:13
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
;-))
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 896
28 avril 2007 à 15:28
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
0
xavdoug Messages postés 21 Date d'inscription samedi 21 avril 2007 Statut Membre Dernière intervention 16 novembre 2007
5 mai 2007 à 23:45
Merci beaucoup.
C'est un problème entièrement résolu !
Impeccable !!

:))
0