Linux underground

find

Utilisée seule, cette commande aura une utilité relativement limitée. Par contre, utilisée en combinaison avec d'autres commandes (avec la technique du pipeline ou avec l'opion -exec), find fera des miracles.

Exemples

Lister tous les fichiers .pps et .ppt de l'arborescence (équivalent de dir *.pps /s + dir *.ppt /s sous Windows) :

$ find $HOME -name "*.pp[st]"

Rechercher dans l'arborescence courante, dans les fichiers .c, ceux contenant le mot clé malloc :

$ find . -name "*.c" | xargs grep -n malloc     (le "." n'est pas obligatoire, le chemin par défaut est le chemin courant)

Si on ne doit pas filtrer des noms de fichiers, on pourra utiliser la commande grep seule. Par exemple, ici, trouver toutes les occurrences de l'option "-s" dans tous les fichiers de l'arborescence :
$ grep -R "\-s" .

Lister les fichiers et répertoires plus vieux que 15 jours :

$ find . -type f -ctime +15
$ find . -type d -ctime +15


Lister une arborescence portage (ou un overlay) :

$ cd /usr/portage
$ find . -mindepth 2 -maxdepth 2 -type d | cut -c 3-


Effacer tous les fichiers plus vieux que 15 jours :

$ find mon_repertoire/ -ctime +15 -exec rm -rf {} \;

Lister les fichiers et répertoires accessibles en écriture par tout le monde ("world writeable") :

$ find . -type f -perm -2 -exec ls -lg {} \; 2> /dev/null > writable.txt
$ find . -type d -perm -2 -exec ls -ldg {} \; 2> /dev/null >> writable.txt

$ find . -type f -perm /o+w -exec ls -lg {} \; 2> /dev/null > writable.txt
$ find . -type d -perm /o+w -exec ls -ldg {} \; 2> /dev/null >> writable.txt


Lister les fichiers et répertoires accessibles en écriture par le groupe et les autres :

$ find . -type f \( -perm -2 -a -perm -20 \) -exec ls -lg {} \; 2> /dev/null > writable.txt
$ find . -type d \( -perm -2 -a -perm -20 \) -exec ls -ldg {} \; 2> /dev/null >> writable.txt

$ find . -type f -perm -g+w,o+w -exec ls -lg {} \; 2> /dev/null > writable.txt
$ find . -type d -perm -g+w,o+w -exec ls -ldg {} \; 2> /dev/null >> writable.txt


Lister les fichiers et répertoires accessibles en écriture par le groupe ou par les autres :

$ find . -type f \( -perm -2 -o -perm -20 \) -exec ls -lg {} \; 2> /dev/null > writable.txt
$ find . -type d \( -perm -2 -o -perm -20 \) -exec ls -ldg {} \; 2> /dev/null >> writable.txt

$ find . -type f -perm /g+w,o+w -exec ls -lg {} \; 2> /dev/null > writable.txt
$ find . -type d -perm /g+w,o+w -exec ls -ldg {} \; 2> /dev/null >> writable.txt


Modifier les droits d'accès des fichiers et répertoires récursivement :

$ find . -type f -exec chmod u=r,g=r,o-rwx {} \;
$ find . -type d -exec chmod u=rx,g=rx,o-rwx {} \;


Contact