OVH Cloud OVH Cloud

Dossiers a prefixes

4 réponses
Avatar
MarzBarzTM
J'ai une collection de bandes dessinees d'une grosseure et d'un age
embarrasants. Pour que ce soit gerable, le fichier "dilbert20010303.gif"
est dans le repertoire annuel "dilbert2001" qui lui meme est dans le
reperoire "dilbert".

Y a t-il une commande pour verifer si les sous-repertoires sont dans les
bons repertoires et surtout si les bon fichiers sont dans les bon
repertoires?

Merci

4 réponses

Avatar
Stephane CHAZELAS
Le Sat, 11 Oct 2003 14:26:18 -0400, MarzBarzTM écrivait :
J'ai une collection de bandes dessinees d'une grosseure et d'un age
embarrasants. Pour que ce soit gerable, le fichier "dilbert20010303.gif"
est dans le repertoire annuel "dilbert2001" qui lui meme est dans le
reperoire "dilbert".

Y a t-il une commande pour verifer si les sous-repertoires sont dans les
bons repertoires et surtout si les bon fichiers sont dans les bon
repertoires?


C'est à dire ? Vérifier que tous les fichiers sont de la forme
xxxx/xxxxyyyy/xxxxyyyyzzzz.gif ?

cd /base/dir
find . -type f -print | sed '
:^./([^/]*)/1([0-9]{4})/12[0-9]{4}.gif$:d'

devrait te sortir tous les fichiers réguliers qui ne satisfont
pas à ce critère (à condition que les noms de fichier ne
contiennent pas de sauts de lignes).

Exemple:

$ find .
.
./A
./A/A2002
./A/A2002/A20020101.gif
./AA
./AA/AA2002
./AA/AA2002/AA20020202.gif
./AA/AA2003
./AA/AA2003/AA20040202.gif
./AAA
./AAA/AAA2002
./AAA/BBB2002
./AAA/BBB2002/AAA20020101.gif

$ find . -type f -print | sed '
:^./([^/]*)/1([0-9]{4})/12[0-9]{4}.gif:d'
./AA/AA2003/AA20040202.gif
./AAA/BBB2002/AAA20020101.gif

--
Stéphane

Avatar
MarzBarzTM
Stephane CHAZELAS wrote:
Le Sat, 11 Oct 2003 14:26:18 -0400, MarzBarzTM écrivait :

J'ai une collection de bandes dessinees d'une grosseure et d'un age
embarrasants. Pour que ce soit gerable, le fichier "dilbert20010303.gif"
est dans le repertoire annuel "dilbert2001" qui lui meme est dans le
reperoire "dilbert".

Y a t-il une commande pour verifer si les sous-repertoires sont dans les
bons repertoires et surtout si les bon fichiers sont dans les bon
repertoires?



C'est à dire ? Vérifier que tous les fichiers sont de la forme
xxxx/xxxxyyyy/xxxxyyyyzzzz.gif ?

cd /base/dir
find . -type f -print | sed '
:^./([^/]*)/1([0-9]{4})/12[0-9]{4}.gif$:d'

devrait te sortir tous les fichiers réguliers qui ne satisfont
pas à ce critère (à condition que les noms de fichier ne
contiennent pas de sauts de lignes).

Exemple:

$ find .
.
./A
./A/A2002
./A/A2002/A20020101.gif
./AA
./AA/AA2002
./AA/AA2002/AA20020202.gif
./AA/AA2003
./AA/AA2003/AA20040202.gif
./AAA
./AAA/AAA2002
./AAA/BBB2002
./AAA/BBB2002/AAA20020101.gif

$ find . -type f -print | sed '
:^./([^/]*)/1([0-9]{4})/12[0-9]{4}.gif:d'
./AA/AA2003/AA20040202.gif
./AAA/BBB2002/AAA20020101.gif

Ca ne semble pas fonctionner:


bash-2.05a$ cd /Users/multimedia/Bandes dessinees/pcnpixel

bash-2.05a$ find . -type f -print | sed
':^./([^/]*)/1([0-9]{4})/12[0-9]{4}.gif$:d'

./pcnpixel2000/pcnpixel20000114.gif
./pcnpixel2000/pcnpixel20000117.gif
./pcnpixel2000/pcnpixel20000621.gif
./pcnpixel2000/pcnpixel20000701.gif
./pcnpixel2000/pcnpixel20000706.gif
...


Avatar
Stephane CHAZELAS
Le Sat, 11 Oct 2003 20:52:50 -0400, MarzBarzTM écrivait :
[...]
C'est à dire ? Vérifier que tous les fichiers sont de la forme
xxxx/xxxxyyyy/xxxxyyyyzzzz.gif ?
[...]


bash-2.05a$ cd /Users/multimedia/Bandes dessinees/pcnpixel

bash-2.05a$ find . -type f -print | sed
':^./([^/]*)/1([0-9]{4})/12[0-9]{4}.gif$:d'

./pcnpixel2000/pcnpixel20000114.gif
./pcnpixel2000/pcnpixel20000117.gif
./pcnpixel2000/pcnpixel20000621.gif
./pcnpixel2000/pcnpixel20000701.gif
./pcnpixel2000/pcnpixel20000706.gif
[tu n'étais pas obligé de citer l'integralité du message...]


Relis mon message et essaie après un "cd .." ou adapte la regex.

Explication de la regexp:
^./([^/]*)/1([0-9]{4})/12[0-9]{4}.gif$


^: au début de la ligne
.: un "."
/: un "/"
([^/]*): une suite de caracteres (excepté "/") que l'on
mémorise (dans 1)
/: suivie d'un "/"
1: la suite de caracteres mémorisée
([0-9]{4}): 4 chiffres que l'on memorise dans 2
/: un "/"
12[0-9]{4}: 12 suivi de 4 chiffres
.: un "."
gif$: gif à la fin de la ligne

--
Stéphane


Avatar
MarzBarzTM
Stephane CHAZELAS wrote:
Le Sat, 11 Oct 2003 20:52:50 -0400, MarzBarzTM écrivait :
[...]

C'est à dire ? Vérifier que tous les fichiers sont de la forme
xxxx/xxxxyyyy/xxxxyyyyzzzz.gif ?



[...]

bash-2.05a$ cd /Users/multimedia/Bandes dessinees/pcnpixel

bash-2.05a$ find . -type f -print | sed
':^./([^/]*)/1([0-9]{4})/12[0-9]{4}.gif$:d'

./pcnpixel2000/pcnpixel20000114.gif
./pcnpixel2000/pcnpixel20000117.gif
./pcnpixel2000/pcnpixel20000621.gif
./pcnpixel2000/pcnpixel20000701.gif
./pcnpixel2000/pcnpixel20000706.gif


[tu n'étais pas obligé de citer l'integralité du message...]

Relis mon message et essaie après un "cd .." ou adapte la regex.

Explication de la regexp:
^./([^/]*)/1([0-9]{4})/12[0-9]{4}.gif$


^: au début de la ligne
.: un "."
/: un "/"
([^/]*): une suite de caracteres (excepté "/") que l'on
mémorise (dans 1)
/: suivie d'un "/"
1: la suite de caracteres mémorisée
([0-9]{4}): 4 chiffres que l'on memorise dans 2
/: un "/"
12[0-9]{4}: 12 suivi de 4 chiffres
.: un "."
gif$: gif à la fin de la ligne

Merci, je comprend maintenant!