La commande Find est l'une des commandes les plus utiles et les plus importantes utilisées sous Linux. Il est disponible et installé par défaut sur presque toutes les versions de Linux. Tout sur Linux est sous forme de fichiers, et nous devrions être en mesure de localiser un fichier si nécessaire.
Avec l'utilisation de la commande de recherche, nous pouvons rechercher les fichiers nécessaires en fonction d'un certain nombre de critères de recherche, nous pouvons utiliser un seul ou combiner plusieurs critères, puis nous pouvons effectuer des actions sur le résultat obtenu. Dans ce tutoriel, nous allons discuter de la commande find à l'aide de quelques exemples,
1) Liste tous les fichiers du répertoire courant et ses sous-répertoires
Pour lister tous les fichiers du répertoire courant et des sous-répertoires, nous pouvons utiliser
$ find
Alternativement, nous pouvons également utiliser ‘find . ' qui fournira également le même résultat que ci-dessus.
2) Trouvez tous les fichiers ou répertoires de votre répertoire de travail actuel
Pour rechercher uniquement des répertoires, nous pouvons utiliser
$ find . -type d
Pour rechercher tous les fichiers uniquement et non les répertoires, utilisez
$ find . -type f
3) Liste tous les fichiers d'un répertoire spécifique
Pour trouver tous les fichiers dans un répertoire particulier, nous pouvons utiliser
$ find /root
Cette commande recherchera tous les fichiers dans le répertoire /root.
4) Rechercher un fichier avec un nom dans un répertoire
Pour rechercher un fichier par son nom dans un répertoire particulier, la commande est
$ find /root -name "linuxtechi.txt"
Cela recherchera le fichier linuxtechi.txt dans le dossier /root. Nous pouvons également rechercher tous les fichiers avec l'extension .txt,
$ find /root -name "*.txt"
5) Rechercher un fichier dans plusieurs répertoires
Pour trouver un fichier par son nom dans plusieurs répertoires, nous pouvons utiliser
$ find /root /etc -name "linuxtechi.txt"
Avec cette commande, nous pouvons rechercher le fichier linuxtechi.txt dans les répertoires /root &/etc.
6) Trouver un fichier dont le nom ignore la casse
Pour rechercher un fichier avec son nom indépendamment de la casse, c'est-à-dire qu'il soit en majuscule ou en minuscule, nous pouvons utiliser '-iname ' option dans la commande de recherche
$ find /root -iname "Linuxtechi.txt"
Le résultat de la commande fournira tous les fichiers nommés linuxtechi.txt, que ce soit en minuscule ou en majuscule ou en casse mixte.
7) Trouver tous les types de fichiers autres que le type mentionné
Supposons que nous voulions trouver tous les fichiers qui ne sont pas du type mentionné, pour y parvenir nous pouvons utiliser,
$ find /root -not -name "*.txt"
8) Rechercher des fichiers avec plusieurs conditions
Nous pouvons également combiner plusieurs conditions pour rechercher les fichiers. Supposons que nous voulions rechercher des fichiers d'extensions ".txt" et ".html"
$ find . -regex ".*\.\(txt\|html\)$"
9) Rechercher des fichiers avec la condition OR
Nous pouvons également combiner plusieurs critères de recherche, puis rechercher les fichiers en fonction de la satisfaction de l'une des conditions en utilisant l'opérateur OU,
$ find -name "*.txt" -o -name "linuxtechi*"
10) Trouvez tous les fichiers en fonction de leurs autorisations
Pour rechercher des fichiers en fonction des autorisations, utilisez -perm option dans la commande de recherche
$ find /root -type f -perm 0777
11) Trouvez tous les fichiers cachés
Pour rechercher tous les fichiers cachés dans un répertoire, la commande est
$ find ~ -type f name ".*"
12) Trouver tous les fichiers avec SGID
Pour localiser tous les fichiers avec des bits SGID, nous pouvons utiliser
$ find . -perm /g=s
13) Trouver tous les fichiers avec SUID
Pour localiser tous les fichiers avec des bits SUID, nous utiliserons
$ find . -perm /u=s
14) Trouver tous les fichiers exécutables
Pour rechercher uniquement les fichiers exécutables, la commande est
$ find . -perm /a=x
15) Trouver tous les fichiers en lecture seule
Nous pouvons également rechercher uniquement des fichiers en lecture seule à l'aide de la commande find,
$ find /root -perm /u=r
16) Trouver tous les fichiers appartenant à un utilisateur
Pour localiser tous les fichiers appartenant à un utilisateur particulier, par exemple linuxtechi, nous utiliserons la commande suivante,
$ find . -user linuxtechi
17) Trouver tous les fichiers appartenant à un groupe
Pour localiser tous les fichiers appartenant à un groupe particulier, utilisez
$ find . -group apache
18) Rechercher des fichiers d'une taille particulière
Si nous voulons rechercher un fichier dont nous connaissons la taille exacte, nous pouvons utiliser '-size ' option avec la commande find pour localiser le fichier
$ find / -size -2M
19) Trouver tous les fichiers de la plage de taille
Si nous recherchons un fichier dont nous ne connaissons pas la taille réelle mais connaissons une plage de taille ou si nous voulons simplement localiser tous les fichiers dans une plage de taille, nous pouvons également localiser le fichier en utilisant ce critère
$ find / -size +2M -size -5M
Nous pouvons également utiliser la commande find pour localiser tous les fichiers dont la taille est supérieure à 50 Mo
$ find / -size +50M
20) Rechercher les fichiers modifiés il y a N jours
Par exemple, nous voulons localiser tous les fichiers qui ont été modifiés il y a 8 jours. Nous pouvons accomplir cela en utilisant '-mtime ' option dans la commande de recherche
$ find / -mtime 8
21) Rechercher les fichiers consultés il y a N jours
De la même manière que dans l'exemple ci-dessus, nous pouvons également localiser les fichiers qui ont été consultés il y a 8 jours en utilisant "-atime",
$ find / -atime 8
22) Trouver tous les fichiers ou répertoires vides
Pour localiser tous les fichiers vides sur le système, nous utiliserons la commande ci-dessous
$ find / -type f -empty
De même, pour localiser tous les répertoires vides
$ find ~/ -type d -empty
23) Trouver les fichiers les plus grands et les plus petits
Pour lister le plus grand ou le plus petit fichier, nous combinerons 'sort ' avec la commande find &si nous voulons en outre lister les trois premiers de ces fichiers les plus volumineux, nous combinerons 'head ‘ commande.
Pour répertorier les trois premiers fichiers du répertoire actuel, la commande est
$ find . -type f -exec ls -s {} \; | sort -n -r | head -3
On peut de même trouver les plus petits fichiers du répertoire courant,
$ find . -type f -exec ls -s {} \; | sort -n | head -3
24) Trouvez tous les fichiers avec des autorisations spécifiques et changez-les en 644 (ou autres autorisations)
Avec la commande find, nous pouvons également obtenir des fonctionnalités avancées. Par exemple, nous pouvons répertorier tous les fichiers qui ont l'autorisation 644, puis modifier ces autorisations en 777. Pour ce faire, exécutez
$ find / -type f -perm 644 -print -exec chmod 777 {} \;
25) Rechercher tous les fichiers correspondant à un critère et les supprimer
Nous pourrions être amenés à localiser et supprimer des fichiers correspondant à un critère. Pour ce faire avec la commande find, exécutez
$ find / -type f -name 'linuxtechi.*' -exec rm -f {} \;
Voici quelques exemples simples démontrant la fonctionnalité de la commande de recherche et elle peut être utilisée pour effectuer plus facilement des tâches de recherche/localisation fastidieuses et répétitives.
Lire aussi :16 exemples de commandes 'cp' utiles pour les débutants Linux