Rechercher des fichiers
Objectifs
Savoir utiliser la commande
locate
Savoir utiliser la commande
find
locate et find
Il y a des centaines de milliers de fichiers sur une distribution Linux classique. Il peut être difficile de s'y retrouver. locate
et find
permettent de s'y retrouver.
locate
recherche des fichiers à partir d'une base de données du contenu de l'arborescence pré-remplie
find
recherche des fichiers dans l'arborescence directement, éventuellement avec des filtres précis.
La commande locate
locate motif
recherche le motif dans la base de données /var/lib/mlocate/mlocate.db
. Si locate ne renvoie rien :
rien n'a été trouvé
la base de données est vide
$ locate issue
/etc/issue
/etc/issue.net
[...]
Méthode : Initialiser la base de données pour locate
La commande updatedb
permet d'initialiser la base de données utilisée par locate. Il faut l'exécuter en utilisateur root avec la commande sudo.
$ sudo updatedb
La base données n'est pas mise à jour en temps réel, mais elle est régulièrement mise à jour par le système.
La commande find
find
recherche dans un dossier donné tous les fichiers qu'il contient en fonction de critères de recherches spécifiques. On peut filtrer la recherche :
par nom de fichier,
par taille,
par date de modification,
par type,
et par bien d'autres critères listés dans le manuel (
man find
).
Il suffit de préciser le point de départ de la recherche et ce qu'on cherche.
$ find . -name "chats*"
./chats
./chats/chats.jpg
Ici on recherche dans le répertoire courant et tous ses sous-répertoires les fichiers et répertoires dont le nom débute par « chats »
.
$ find . -name "chats*" -type d
./chats
Ici on recherche tous les fichiers de type "répertoire" (d, pour directory en anglais) qui de plus commencent par le mot « chats »
.
Complément : Exécution de commandes par find
find permet d'exécuter une commande sur chaque fichier trouvé avec l'option -exec.
$ find . -name "photo*" -exec cp {} {}.bak \;
cp
est la commande exécutée{}
est remplacé par le nom du fichier trouvé\;
indique la fin de la commande.
Ici, on crée une copie de chaque fichier trouvé en ajoutant .bak
au nom de fichier.