Linux - Commande find
Alasta 3 Janvier 2014 linux Bash CentOS Mac cli Linux Open Source shell
Description : Mémento de la commande find.
Commande find :
find /chemin/de/recherche options motif.de.recherche
Commande de base :
find / -name "motif.de.recherche"=> Il y a la possibilité de mettre des caractères jokers [*?]
Recherche insensible à la case :
find / -iname "motif.de.recherche"Recherche qui ne correspond pas au motif
find /etc -not -name "issue"Limitation de la profondeur de recherche :
find / -maxdepth 3 -name passwd=> On descend à 3 profondeur de dossiers
find / -mindepth 4 -maxdepth 5 -name passwd
=> on limite la recherche à une profondeur comprise entre 4 et 5
Execution de commande sur les résultats trouvés :
find / -iname "issue" -exec ls -alZ {} \;find /tmp -iname "toto" -exec cp {} {}.backup \;
Suppression
find /tmp -name core -type f -print | xargs /bin/rmfind / -name "*.log" -delete
find . -name "*.log" -exec rm -rf {} \;
Affiche le type de fichier, le nom et l'inode :
find /tmp -printf "%y %i %prn\n"Recherche basée sur un inode :
find / -inum 12589335Recherche basée sur une permission de fichier :
find / -perm -g=r -type f -exec ls -l {} \;=> Affiche tous les fichiers (-type f) avec la permission read au groupe (-g=r)
permissions : u=user, g=groupe, o=other
types : f=file, d=directory, s=socket, l =symbolic link, b=block, c=character, p=named pipe (FIFO)
find / -perm 444 -type f -exec ls -l {} \;
=> affiche les fichiers ayant une permission 444
find / -perm -444 -type f -exec ls -l {} \;
=> affiche les fichiers ayant au moins une permission 444
find / -perm -4000
=> affiche les fichiers avec SUID
- Recherche des fichiers vides :
find / -emptyRecherche des fichiers non vides :
find . -not -empty -name ".*"Recherche lien symbolique :
find /tmp -lname "*"Recherche du top 5 des gros fichiers :
find /tmp -type f -exec ls -s {} \; | sort -n -r | head -5Recherche par taille :
find / -type f -size 7M=> affiche les fichiers de 7.XX Mo, il est possible d'utiliser +/-
'b' for 512-byte blocks (this is the default if no suffix is used)
'c' for bytes
'w' for two-byte words
'k' for Kilobytes (units of 1024 bytes)
'M' for Megabytes (units of 1048576 bytes)
'G' for Gigabytes (units of 1073741824 bytes)
Recherche basée sur la date :
find / -mmin -60=> affiche les fichiers modifier dans les 60 dernières minutes
-mmin N : dernières modifications en N minutes
-mtime N : dernières modifications en N jours
-amin N : deniers accès en N minutes
-atime N : derniers accès en N jours
-cmin N : fichiers avec le status changement en N minutes (inode change).
-ctime N : fichiers avec le status changement en N jours (inode change).
avec N=N minutes/jours, -N= moins de N minutes/jours, +N= plus de N minutes/jours
Recherche basée sur la date d'un fichier de référence :
find /var -newer /etc/passwd=> fichier modifié après la date de modification de /etc/passwd
-anewer : accédé et -cnewer : changé (inode change)
Recherche des fichiers cachés :
find / -regex ".*/\..*"Recherche sur un montage :
find / -xdev -iname "toto"=> on limite la recherche aux dossiers/fichiers dans le point de montage /
Rechercher et renommer les fichiers sans les espace
find /tmp -type f -iname "* *" -exec bash -c 'mv -i "$1" "${1// /_}" ' '{}' '{}' \;Recherche de fichier avec le même inode :
find /etc -samefile /etc/issue=> ajouter l'option -L qui incluera les liens symboliques.