Blog de Robert Sebille


Vers mon curriculum vitae - Conception

Accueil > Technique > Informatique > Shell bash > Chercher des fichiers de plus de Xk dans une arborescence de répertoires en (...)

Robert Sebille

Chercher des fichiers de plus de Xk dans une arborescence de répertoires en excluant certains répertoires.

mardi 17 janvier 2012, par Robert

Soit l’arborescence suivante :

racine
0000_rep1
sous-répertoires ...
0000_rep2
sous-répertoires ...
ABCD_rep1
sous-répertoires ...
0025_rep1
sous-répertoires ...
EFGH_rep1
sous-répertoires ...

On souhaite rechercher tous les fichiers de plus de 800K dans toute l’arborescence, à l’exclusion des répertoires 0000_rep1, 0000_rep2, ABCD_rep1 et de leurs sous-répertoires. Voici la ligne de commande :

cd racine
find . -path './0000_*' -prune -o -path './ABCD_*' -prune -o -type f -size +800k -exec ls -lah '{}' \;

-path motif reconnait un fichier dont le nom correspond à motif fourni
-prune indique ne pas descendre dans l’arborescence du répertoire en cours
-path ’./0000_*’ -prune indique donc de ne pas suivre l’arborescence des répertoires débutant par ’0000_’

expr1 -o expr2 OU ; expr2 n’est pas évaluée si expr1 est vraie.
Autrement dit, dans l’exemple :
- Si -path ’./0000_*’ -prune trouve répertoire débutant par ’0000_’, find s’arrête là,
- sinon, on évalue si -path ’./ABCD_*’ -prune trouve répertoire débutant par ’ABCD_’, si oui, find s’arrête là,
- sinon on continue la suite des paramètres du find

-type f cherche un fichier
-size +800k cherche des fichiers de + de 800k (pour les différents arguments de find, voir le man de find)
-exec ls -lah exécute la commande ’ls -lah’.
La chaîne '{}' est remplacée par le nom du fichier en cours de traitement. Cette chaîne doit être protégée par le caractère d’échappement ’\’.
’ ;’ cloture les arguments de -exec

Un message, un commentaire ?

modération a priori

Ce forum est modéré a priori : votre contribution n’apparaîtra qu’après avoir été validée par un administrateur du site.

Qui êtes-vous ?
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.