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
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