Vous êtes sur la page 1sur 4

Recherche de fichiers et répertoires à travers l’arborescence et recherche dans un fichier.

 La commande «find» :

La commande «find» sert à rechercher des fichiers dans l’arborescence ou une partie de
celle-ci. Cette commande est extrêmement puissante, et nous n’aborderons ici que
quelques-unes de ses possibilités. Cette commande est très utile pour le scripting.

Syntaxe générale: find <chemin> <expressions> <action>

chemin : Chemin relatif ou absolu d'un répertoire


expression : Critères de recherche
action : L'action à exécuter pour chaque résultat trouvé

Exemples :

$touch rep10/fichier11.txt

✗ Recherche du fichier «fichier11.txt» à partir de mon répertoire courant.

$find . -name fichier11.txt


./rep10/fichier11.txt

Le «.» (point) représente le répertoire courant.

✗ Recherche du fichier host.conf à travers le dossier /etc.

$ sudo find /etc -name host.conf


/etc/host.conf

✗ Recherche de tous les fichiers (uniquement les fichiers) se terminant par «.conf» à partir du
répertoire /etc.

$sudo find /etc -type f -name "*.conf"

Car si on ne spécifie pas le type (fichier ou dossier) find cherche les deux à la fois.

$ touch FILE
$ mkdir rep10/FILE
$ find . -name FILE
./FILE
./rep10/FILE

Recherche d’uniquement les dossiers :

$ find . -type d -name FILE


./rep10/FILE
Recherche du fichier FILE écris en minuscule dans les critères de recherche:

$ find . -type d -name file

Aucun résultat trouvé car Linux est sensible à la case.

Pour que «find» ne tient pas de la case, il faut ajouter la lettre i à -name :

$ find . -type d -iname file


./rep10/FILE

Exemple simple avec une action :

$ find . -iname file -exec echo "J'ai trouvé :" {} \;


J'ai trouvé : ./FILE
J'ai trouvé : ./rep10/FILE

Indication :
echo "J'ai trouvé" : Est la commande a exécuté.
{} : va contenir les éléments trouvés.
; finis la commande exécutée par find.
L’anti slash c’est pour ne pas interpréter le point virgule comme un caractère spécial.

 La commande locate :

Cette commande permet, au même titre que find, d’effectuer des recherches de fichiers et ce, avec
un temps de recherche plus court.

Il faut installer en premier la commande.


$ sudo apt install locate

Ensuite il faut réaliser l’opération suivante :

$ sudo updatedb

Exemple :

$ locate fichier11.txt
/home/nour/rep10/fichier11.txt

$ locate host.conf
/etc/host.conf
/snap/core18/1932/etc/host.conf
/snap/core18/1944/etc/host.conf
/usr/share/doc/cups-daemon/examples/cups-socket.localhost.conf
/usr/share/man/man5/host.conf.5.gz
$ locate FICHIER11.TXT
Aucun résultat

Pour ne pas tenir compte de la case, il faut ajouter l’option «-i» :


$ locate -i FICHIER11.TXT
/home/nour/rep10/fichier11.txt

 Recherche par l’explorateur de fichiers de Linux :

 La commande GREP

La commande grep permet de chercher une expression rationnelle dans un ou plusieurs fichiers.

Si le mot est trouvé, grep affiche par défaut la ligne contenant ce mot

Par exemple, si l’on désire chercher le mot linux dans un fichier nommé fichier1 qui contiens la
phrase suivante :

« Parmi les systèmes d’exploitation les plus performants, Linux offre des fonctionnalités
intéressantes. »

$ grep –i linux fichier1

Parmi les systèmes d’exploitation les plus performants, Linux offre des fonctionnalités
intéressantes.

Note : L’option «-i» est utilisée pour ne pas tenir compte de la casse.

Exemples :

$ sudo grep root /etc/passwd


root:x:0:0:root:/root:/bin/bash
nm-openvpn:x:118:124:NetworkManager OpenVPN,,,:/var/lib/openvpn/chroot:/usr/sbin/nologin

$ sudo grep -w root /etc/passwd


root:x:0:0:root:/root:/bin/bash

$man grep
…...
-w, --word-regexp
Select only those lines containing matches that form whole words
…….

$ sudo grep -wi ROOT /etc/passwd


root:x:0:0:root:/root:/bin/bash

Position de la ligne dans le fichier.


$ sudo grep -win mail /etc/passwd
9:mail:x:8:8:mail:/var/mail:/usr/sbin/nologin

Afficher les trois lignes avant et après la ligne trouvée.


$ sudo grep -win -C3 mail /etc/passwd
6-games:x:5:60:games:/usr/games:/usr/sbin/nologin
7-man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
8-lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
9:mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
10-news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
11-uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
12-proxy:x:13:13:proxy:/bin:/usr/sbin/nologin

Note : A pour après et B pour avant la ligne trouvée.

$ sudo grep -win -A2 mail /etc/passwd


9:mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
10-news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
11-uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin

$ sudo grep -win -B2 mail /etc/passwd


7-man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
8-lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
9:mail:x:8:8:mail:/var/mail:/usr/sbin/nologin

À titre d’exercice réaliser les manipulations précedentes.

Vous aimerez peut-être aussi