====== Commandes ====== ===== Find ===== La commande find permet de chercher des fichiers, et eventuellement d'éxecuter une action dessus. ==== Aide ==== Usage: find [-HL] [PATH]... [OPTIONS] [ACTIONS] Search for files and perform actions on them. First failed action stops processing of current file. Defaults: PATH is current directory, action is '-print' -L,-follow Follow symlinks -H ...on command line only -xdev Don't descend directories on other filesystems -maxdepth N Descend at most N levels. -maxdepth 0 applies actions to command line arguments only -mindepth N Don't act on first N levels -depth Act on directory *after* traversing it Actions: ( ACTIONS ) Group actions for -o / -a ! ACT Invert ACT's success/failure ACT1 [-a] ACT2 If ACT1 fails, stop, else do ACT2 ACT1 -o ACT2 If ACT1 succeeds, stop, else do ACT2 Note: -a has higher priority than -o -name PATTERN Match file name (w/o directory name) to PATTERN -iname PATTERN Case insensitive -name -path PATTERN Match path to PATTERN -ipath PATTERN Case insensitive -path -regex PATTERN Match path to regex PATTERN -type X File type is X (one of: f,d,l,b,c,...) -perm MASK At least one mask bit (+MASK), all bits (-MASK), or exactly MASK bits are set in file's mode -mtime DAYS mtime is greater than (+N), less than (-N), or exactly N days in the past -mmin MINS mtime is greater than (+N), less than (-N), or exactly N minutes in the past -newer FILE mtime is more recent than FILE's -inum N File has inode number N -user NAME/ID File is owned by given user -group NAME/ID File is owned by given group -size N[bck] File size is N (c:bytes,k:kbytes,b:512 bytes(def.)) +/-N: file size is bigger/smaller than N -links N Number of links is greater than (+N), less than (-N), or exactly N -prune If current file is directory, don't descend into it If none of the following actions is specified, -print is assumed -print Print file name -print0 Print file name, NUL terminated -exec CMD ARG ; Run CMD with all instances of {} replaced by file name. Fails if CMD exits with nonzero -exec CMD ARG + Run CMD with {} replaced by list of file names -delete Delete current file/directory. Turns on -depth option ==== Des exemples ==== find . -print | less affiche la liste de tous les fichiers du répertoire courant (l'option -print est normalement incluse par défaut). On peut rediriger les messages d'erreur vers le "trou noir" (le périphérique /dev/null) : find . -print 2> /dev/null | less ou les inclures (on rassemble alors en un seul canal la sortie standard et le sortie d'erreur standard) : find . -print 2>&1 liste | less Pour les options -size, -atime, -mtime, -ctime et -links, il faut spécifier une valeur, précédée par le signe "+" pour "supérieur à", "-" pour "inférieur à", ou rien pour "égal à". Par exemple : find . -mtime -3 -print affiche les fichiers dont les dernières modifications remontent à moins de 3 jours (donc tous les fichiers modifiés entre aujourd'hui et il y a trois jours seront affichés). De même, +5 afficherait les fichiers dont les dernières modifications remontent à plus de 5 jours.\\ \\ Pour afficher tous les fichiers se terminant par ".c" : find . -name ".c" -print Pour afficher tous les répertoires dont le nom se termine par "s" : find . -type d -name "*s" -print Pour afficher tous les fichiers, on aurait utilisé le code f.\\ \\ Pour afficher tous les fichiers ayant une taille de 10 blocs: find . -size 10 -print ce qui est équivalent à demander la liste des fichiers ayant une taille de 5120 caractères : find . -size 5210c -print On aurait pu aussi demander la liste des fichiers ayant une taille supérieure (+200k) ou inférieure (-200k) à 200 Ko.\\ \\ Pour afficher tous les fichiers ayant une certaine permission exprimée en octale : find . -perm 755 -print ou ayant au minimum les droits d'écriture pour le groupe : find . -perm -020 -print Pour éxecuter la commande ls -l pour chaque fichier trouvé : find . -type f -exec ls -l {} \; et pour demander confirmation avant chaque action : find . -type f -ok -exec rm {} \; Toute autre commande peut être éxecutée avec l'option -exec.\\ \\ Pour associer plusieurs critères avec -a pour et, -o pour ou, ! pour négation. Par exemple : find . ! -user root -print affiche tous les fichiers n'appartenant à root, et find . \( -name '*.tex' -o -name '*.dvi' \) -print affiche tous les fichiers se terminant par ".tex" ou ".dvi".\\ \\ On peut aussi enchainer la recherche avec une action: find . -name "*.mkv" -exec mv {} /share/Videos/MOVIES/ + Déplacer les fichiers de type mkv qui ont été trouvé dans le dossier courant dans le dossier "/share/Videos/MOVIES/" find . -name "*.R@n50W" -delete Supprimer les fichiers de type "*.R@n50W" trouvés