find
La commande find permet de trouver ( localiser
) un fichier . Cette commande recherche les fichiers remplissant
certaines conditions, en commençant par le répertoire
indiqué ou le répertoire courant. Les conditions
peuvent porter sur le nom du fichier, le propriétaire
ou la date de création ou de modification. Plus les
critères sont précis et plus la recherche sera
efficace.
La commande find utilise la syntaxe suivante
:
find répertoire
options
Les options permettent de déterminer
les critères de recherche. Pour trouver tous
les fichiers de votre répertoire personnel dont
le nom se termine par la lettre x, tapez : find
~/ -name '*x' -print
Les options :
+n supérieur a n,
-n inférieur a n,
n égal a n.
-amin n dernier acces au fichier il y a n minutes.
-atime n dernier acces au fichier il y a n*24 heures.
-cmin n derniere modification du statut du fichier il y a
n minutes.
-ctime n derniere modification du statut du fichier il y a
n*24 heures.
-gid n Fichier de GID numerique valant n.
-group nom_groupe fichier appartenant au groupe nom_groupe
(eventuellement ID numerique).
-iregex motif identique a -regex, mais sans differencier les
majuscules et les
minuscules
-mmin n Fichier dont les donnees ont ete modifiees il y a
n minutes.
-mtime n Fichier dont les donnees ont ete modifiees il y a
n*24 heures.
-perm mode
Fichier dont les autorisations d'acces sont fixees exactement
au
mode indique (en notation symbolique ou octale). La notation
symbolique utilise le mode 0 comme point de depart.
-perm -mode
Fichier ayant au moins toutes les autorisations indiquees
dans le mode.
-perm +mode
Fichier ayant certaines des autorisations indiquees dans
le mode.
-regex motif
Nom de fichier correspondant a l'expression rationnelle
motif.
Il s'agit d'une correspondance sur le nom de fichier complet,
pas d'une recherche. Par exemple, pour mettre en correspondance
un fichier nomme `./fubar3', vous pouvez utiliser les expres
sions rationnelles `.*bar.' ou `.*b.*3', mais pas `b.*r3'.
-size n[bckw]
Fichier utilisant n unites d'espace. Les unites sont des
blocs de 512 octets par defaut (ou si un suffixe `b' suit
le nombre n), des octets si un suffixe `c' suit n, des kilo-octets
si un suffixe `k' est utilise, ou des mots de 2 octets si
un `w' suit le nombre n. La taille ne prend pas en compte
les blocs indirects, mais elle comptabilise les blocs des
fichiers eparpilles pas encore alloués.
-type c
Fichier du type c :
b fichier special en mode bloc (avec tampon)
c fichier special en mode caractere (sans tampon)
d repertoire
p tube nomme (FIFO)
f fichier regulier
l liens symbolique
s socket
D door (Solaris)
-uid n Fichier dont l'U-ID numerique vaut n.
-uid n Fichier dont l'U-ID numerique vaut n.
-used n
fichier dont le dernier acces date de n jours apres la dernière
modification de son statut.
-user utilisateur fichier appartenant a l'utilisateur
indique (U-ID numerique
eventuellement)
-xtype c
comme -type sauf si le fichier est un lien symbolique. Dans
ce cas, si l'option -follow n'a pas ete fournie, le test
est vrai si le fichier destination du lien est de type c
; si l'option
-follow a ete reclamee, le test est vrai si c vaut `l'.
Autrement dit, pour les liens symboliques, -xtype verifie
le type des fichiers que l'option -type ne verifie pas.
Significaion des options utilisées
:
~/ Indique
que la recherche doit commencer au niveau supérieur
de votre répertoire personnel.
~ indique votre répertoire personnel et
/ le niveau supérieur.
-name '*x'
Indique que le critère porte sur le nom. Un métacaractère
est utilisé ici pour spécifier "toute
chaîne de caractères terminée par la
lettre x. Les chaînes de
caractères doivent être placées entre
guillemets.
-print indique que le résultat de la commande doit être
affiché à l'écran.
Exemples :
find / -user
nom_utilisateur -ls
retrouver tous les fichiers d'un utilisateur sur un système,
même si l'utilisateur n'existe plus.
find / -name '*' | xargs
grep -l Linux il cherchera de manière recursive
dans tous les répertoire du disque, les fichiers
contenant le texte Linux.
~Pour indiquer que la recherche
se fait dans votre répertoire courant.
[cr@localhost cr]$ find ~ -name fichier*
/home/cr/Documents/fichier1.txt
/home/cr/Documents/fichier2.txt
/home/cr/Documents/fichier3.txt
/home/cr/Documents/fichier3sed.txt
/home/cr/perl/fichier
/home/cr/perl/fichier.txt
/home/cr/linux/fichier
/home/cr/linux/fichier.txt
[cr@localhost cr]$
[cr@localhost cr]$ find -name fichier*
./Documents/fichier1.txt
./Documents/fichier2.txt
./Documents/fichier3.txt
./Documents/fichier3sed.txt
./perl/fichier
./perl/fichier.txt
./linux/fichier
./linux/fichier.txt
[cr@localhost cr]$
[cr@localhost cr]$ pwd
/home/cr
Recherche dans le répertoire les fichiers fichier*.
La commande `pwd` est interpréter, elle donne /home/cr.Ici
c'est comme si vous aviez fait :
find `pwd` -name fichier* équivalent
à find /home/cr -name fichier*
[cr@localhost cr]$ find `pwd` -name
fichier*
/home/cr/Documents/fichier1.txt
/home/cr/Documents/fichier2.txt
/home/cr/Documents/fichier3.txt
/home/cr/Documents/fichier3sed.txt
/home/cr/perl/fichier
/home/cr/perl/fichier.txt
/home/cr/linux/fichier
/home/cr/linux/fichier.txt
[cr@localhost cr]$
Trouver les fichiers n'ayant pas été modifiés
depuis au moins une semaine :
[cr@localhost cr]$ find ~/Documents/*.gz
-mtime +7 -print
/home/cr/Documents/eieio-0.16.tar.gz
/home/cr/Documents/elib-1.0.tar.gz
/home/cr/Documents/jde-latest.tar.gz
/home/cr/Documents/phorum-3.4.4.tar.gz
/home/cr/Documents/php-quizz-css.tar.gz
/home/cr/Documents/semantic-1.3.3.tar.gz
/home/cr/Documents/Smarty-2.5.0.tar.gz
/home/cr/Documents/Smarty-2.6.0-docs.tar.gz
/home/cr/Documents/Smarty-2.6.0-RC3.tar.gz
/home/cr/Documents/speedbar-0.13a.tar.gz
/home/cr/Documents/VTK-4.2-LatestRelease.tar.gz
Copier tous les fichiers commençant par 'a' dans
/tmp :
find / -name "a*" -exec cp -rf {} /tmp\; -print
Effacer les fichiers de suffixe gif :
find / -name "*~" -exec rm -f {} \;
[cr@localhost Documents]$ find -name ~/*.gif -exec rm -f
{} \;
[cr@localhost Documents]$ find ~/Documents -name *.gif -exec
rm -f {} \;
Remarque : faire
man find
dans une fenêtre xterm
, pour avoir toutes les options. Vous pouvez utilisez la
commande locate
|