GNU/Linux >> Tutoriels Linux >  >> Linux

25 exemples simples de la commande Linux find

Commande de recherche Linux

La commande de recherche de Linux est une commande très utile et pratique pour rechercher des fichiers à partir de la ligne de commande. Il peut être utilisé pour rechercher des fichiers en fonction de divers critères de recherche tels que les autorisations, la propriété de l'utilisateur, la date/heure de modification, la taille, etc. Dans cet article, nous apprendrons à utiliser la commande de recherche ainsi que diverses options qu'elle prend en charge.

La commande find est disponible sur la plupart des distributions Linux par défaut, vous n'avez donc pas besoin d'installer de package. La commande find est essentielle à apprendre, si vous voulez devenir super productif avec la ligne de commande sous Linux.

La syntaxe de base de la commande find ressemble à ceci

$ find location comparison-criteria search-term

1. Lister tous les fichiers dans le répertoire courant et les sous-répertoires

Cette commande répertorie tous les fichiers du répertoire courant ainsi que les sous-répertoires du répertoire courant.

$ find
.
./abc.txt
./subdir
./subdir/how.php
./cool.php

La commande est la même que la suivante

$ find .
$ find . -print

2. Rechercher un répertoire ou un chemin spécifique

La commande suivante recherchera les fichiers dans le répertoire test du répertoire courant. Répertorie tous les fichiers par défaut.

$ find ./test
./test
./test/abc.txt
./test/subdir
./test/subdir/how.php
./test/cool.php

La commande suivante recherche les fichiers par leur nom.

$ find ./test -name "abc.txt"
./test/abc.txt

Nous pouvons également utiliser des caractères génériques

$ find ./test -name "*.php"
./test/subdir/how.php
./test/cool.php

Notez que tous les sous-répertoires sont parcourus de manière récursive. C'est donc un moyen très puissant de trouver tous les fichiers d'une extension donnée.

Essayer de rechercher le répertoire "/" qui est la racine, rechercherait l'ensemble du système de fichiers, y compris les périphériques montés et les périphériques de stockage réseau. Donc sois prudent. Bien sûr, vous pouvez appuyer sur Ctrl + c à tout moment pour arrêter la commande.

When specifying the directory ("./test" in this example), its fine to omit the trailing slash. However, if the directory is actually a symlink to some other location then you MUST specify the trailing slash for it to work properly (find ./test/ ...)

Ignorer la casse

Il est souvent utile d'ignorer la casse lors de la recherche de noms de fichiers. Pour ignorer la casse, utilisez simplement l'option "iname" au lieu de l'option "name".

$ find ./test -iname "*.Php"
./test/subdir/how.php
./test/cool.php
Its always better to wrap the search term (name parameter) in double or single quotes. Not doing so will seem to work sometimes and give strange results at other times.

3. Limiter la profondeur de parcours des répertoires

Par défaut, la commande find parcourt l'ensemble de l'arborescence de répertoires de manière récursive, ce qui prend du temps et des ressources. Cependant, la profondeur de parcours des répertoires peut être spécifiée. Par exemple, nous ne voulons pas descendre plus de 2 ou 3 niveaux dans les sous-répertoires. Ceci est fait en utilisant l'option maxdepth.

$ find ./test -maxdepth 2 -name "*.php"
./test/subdir/how.php
./test/cool.php
$ find ./test -maxdepth 1 -name *.php
./test/cool.php

Le deuxième exemple utilise maxdepth de 1, ce qui signifie qu'il n'ira pas en dessous d'un niveau de profondeur, ni uniquement dans le répertoire courant.

Ceci est très utile lorsque nous voulons effectuer une recherche limitée uniquement dans le répertoire actuel ou dans les sous-répertoires profonds d'un niveau maximum et non dans toute l'arborescence des répertoires, ce qui prendrait plus de temps.

Tout comme maxdepth, il existe une option appelée mindepth qui fait ce que son nom l'indique, c'est-à-dire qu'elle ira au moins au niveau N avant de rechercher les fichiers.

4. Inverser la correspondance

Il est également possible de rechercher des fichiers qui ne correspondent pas à un nom ou à un modèle donné. Ceci est utile lorsque nous savons quels fichiers exclure de la recherche.

$ find ./test -not -name "*.php"
./test
./test/abc.txt
./test/subdir

Ainsi, dans l'exemple ci-dessus, nous avons trouvé tous les fichiers qui n'ont pas l'extension php, soit des fichiers non php. La commande find prend également en charge le point d'exclamation à la place de not.

find ./test ! -name "*.php"

5. Combinez plusieurs critères de recherche

Il est possible d'utiliser plusieurs critères lors de la spécification du nom et de l'inversion. Par exemple

$ find ./test -name 'abc*' ! -name '*.php'
./test/abc.txt
./test/abc

La commande find ci-dessus recherche les fichiers dont le nom commence par abc et qui n'ont pas d'extension php. Ceci est un exemple de la puissance des expressions de recherche pouvant être créées avec la commande find.

Opérateur OU

Lors de l'utilisation de plusieurs critères de nom, la commande de recherche les combinerait avec l'opérateur AND, ce qui signifie que seuls les fichiers qui satisfont à tous les critères seront mis en correspondance. Cependant, si nous devons effectuer une correspondance basée sur OR, la commande find a le commutateur "o".

$ find -name '*.php' -o -name '*.txt'
./abc.txt
./subdir/how.php
./abc.php
./cool.php

La commande ci-dessus recherche les fichiers se terminant par l'extension php ou l'extension txt.

6. Rechercher uniquement des fichiers ou uniquement des répertoires

Parfois, nous voulons rechercher uniquement des fichiers ou uniquement des répertoires avec un nom donné. Find peut également le faire facilement.

$ find ./test -name abc*
./test/abc.txt
./test/abc
Only files
$ find ./test -type f -name "abc*"
./test/abc.txt
Only directories
$ find ./test -type d -name "abc*"
./test/abc

Très utile et pratique !

7. Rechercher plusieurs répertoires ensemble

Supposons donc que vous souhaitiez effectuer une recherche dans 2 répertoires distincts. Encore une fois, la commande est très simple

$ find ./test ./dir2 -type f -name "abc*"
./test/abc.txt
./dir2/abcdefg.txt

Vérifiez qu'il répertorie les fichiers de 2 répertoires distincts.

8. Trouver les fichiers cachés

Les fichiers cachés sous Linux commencent par un point. Il est donc facile de le mentionner dans les critères de nom et de répertorier tous les fichiers cachés.

$ find ~ -type f -name ".*"

9. Rechercher des fichiers avec certaines autorisations

La commande find peut être utilisée pour rechercher des fichiers avec une autorisation spécifique à l'aide de l'option "perm". La commande suivante recherche les fichiers avec l'autorisation 0664

$ find . -type f -perm 0664
./abc.txt
./subdir/how.php
./abc.php
./cool.php

Cela peut être utile pour trouver des fichiers avec de mauvaises autorisations, ce qui peut entraîner des problèmes de sécurité. L'inversion peut également être appliquée à la vérification des autorisations.

$ find . -type f ! -perm 0777
./abc.txt
./subdir/how.php
./abc.php
./cool.php

10. Trouver des fichiers avec des bits sgid/suid définis

L'option "perm" de la commande find accepte la même chaîne de mode que chmod. La commande suivante trouve tous les fichiers avec l'autorisation 644 et le bit sgid défini.

# find / -perm 2644

De même, utilisez 1664 pour le bit collant. L'option perm prend également en charge l'utilisation d'une syntaxe alternative au lieu des nombres octaux.

$ find / -maxdepth 2 -perm /u=s 2>/dev/null
/bin/mount
/bin/su
/bin/ping6
/bin/fusermount
/bin/ping
/bin/umount
/sbin/mount.ecryptfs_private

Notez que le "2>/dev/null" supprime les entrées qui ont une erreur de "Permission Denied"

11. Rechercher des fichiers en lecture seule

Trouver tous les fichiers en lecture seule.

$ find /etc -maxdepth 1 -perm /u=r
/etc
/etc/thunderbird
/etc/brltty
/etc/dkms
/etc/phpmyadmin
... output truncated ...

12. Rechercher des fichiers exécutables

La commande suivante trouvera les fichiers exécutables

$ find /bin -maxdepth 2 -perm /a=x
/bin
/bin/preseed_command
/bin/mount
/bin/zfgrep
/bin/tempfile
... output truncated ...

13. Rechercher des fichiers appartenant à un utilisateur particulier

Pour trouver tout ou un seul fichier appelé tecmint.txt sous le répertoire /root du propriétaire root.

$ find . -user bob
.
./abc.txt
./abc
./subdir
./subdir/how.php
./abc.php

Nous pourrions également spécifier le nom du fichier ou tout autre critère lié au nom ainsi que des critères d'utilisateur

$ find . -user bob -name '*.php'

Il est très facile de voir comment nous pouvons construire critères après critères pour affiner notre recherche de fichiers correspondants.

14. Rechercher les fichiers appartenant au groupe

Trouver tous les fichiers appartenant à un groupe particulier.

# find /var/www -group developer

Saviez-vous que vous pouviez rechercher votre répertoire personnel en utilisant le symbole ~ ?

$ find ~ -name "hidden.php"

Facile !!

Rechercher des fichiers et des répertoires en fonction de la date et de l'heure de modification

Un autre excellent critère de recherche pris en charge par la commande find est la modification et la date/heure d'accès. C'est très pratique lorsque nous voulons savoir quels fichiers ont été modifiés dans une certaine plage de temps ou de date. Prenons quelques exemples

15. Trouver les fichiers modifiés il y a N jours

Pour retrouver tous les fichiers modifiés il y a 50 jours.

# find / -mtime 50

16. Rechercher les fichiers consultés au cours des N derniers jours

Trouvez tous les fichiers auxquels vous avez accédé au cours des 50 derniers jours.

# find / -atime 50

17. Rechercher les fichiers modifiés dans une plage de jours

Trouvez tous les fichiers qui ont été modifiés il y a 50 à 100 jours.

# find / -mtime +50 –mtime -100

18. Rechercher les fichiers modifiés au cours des N dernières minutes.

Rechercher les fichiers modifiés au cours de la dernière heure.

$ find /home/bob -cmin -60

19. Fichiers modifiés au cours de la dernière heure

Pour trouver tous les fichiers qui ont été modifiés au cours de la dernière heure.

# find / -mmin -60

20. Rechercher les fichiers consultés au cours de la dernière heure

Pour trouver tous les fichiers consultés au cours de la dernière heure.

# find / -amin -60

21. Trouver des fichiers de taille donnée

Rechercher des fichiers et des répertoires en fonction de leur taille. Pour trouver tous les fichiers de 50 Mo, utilisez.

# find / -size 50M

22. Rechercher des fichiers dans une plage de tailles

Pour trouver tous les fichiers dont la taille est supérieure à 50 Mo et inférieure à 100 Mo.

$ find / -size +50M -size -100M

23. Trouver les fichiers les plus grands et les plus petits

La commande find, lorsqu'elle est utilisée en combinaison avec les commandes ls et sort, peut être utilisée pour répertorier les fichiers les plus volumineux.
La commande suivante affichera le 5 fichier le plus volumineux du répertoire actuel et de son sous-répertoire. Cela peut prendre un certain temps à s'exécuter en fonction du nombre total de fichiers que la commande doit traiter.

$ find . -type f -exec ls -s {} \; | sort -n -r | head -5

De même, lorsqu'il est trié par ordre croissant, il affiche d'abord les plus petits fichiers

$ find . -type f -exec ls -s {} \; | sort -n | head -5

24. Rechercher des fichiers et des répertoires vides

La commande suivante utilise l'option "empty" de la commande find, qui trouve tous les fichiers vides.

# find /tmp -type f -empty

Pour classer tous les répertoires vides, utilisez le type "d".

$ find ~/ -type d -empty

Vraiment très simple et facile

Quelques opérations avancées

La commande find ne se contente pas de trouver des fichiers en fonction de certains critères, elle peut également agir sur ces fichiers à l'aide de n'importe quelle commande linux. Par exemple, nous pourrions vouloir supprimer certains fichiers.

Voici quelques exemples rapides

25. Lister les fichiers trouvés

Disons que nous avons trouvé des fichiers à l'aide de la commande find et que nous voulons maintenant les répertorier comme l'aurait fait la commande ls. C'est très simple.

$ find . -exec ls -ld {} \;
drwxrwxr-x 4 enlightened enlightened 4096 Aug 11 19:01 .
-rw-rw-r-- 1 enlightened enlightened 0 Aug 11 16:25 ./abc.txt
drwxrwxr-x 2 enlightened enlightened 4096 Aug 11 16:48 ./abc
drwxrwxr-x 2 enlightened enlightened 4096 Aug 11 16:26 ./subdir
-rw-rw-r-- 1 enlightened enlightened 0 Aug 11 16:26 ./subdir/how.php
-rw-rw-r-- 1 enlightened enlightened 29 Aug 11 19:13 ./abc.php
-rw-rw-r-- 1 enlightened enlightened 0 Aug 11 16:25 ./cool.php

26. Supprimer tous les fichiers ou répertoires correspondants

La commande suivante supprimera tous les fichiers texte du répertoire tmp.

$ find /tmp -type f -name "*.txt" -exec rm -f {} \;

La même opération peut être effectuée avec les répertoires, il suffit de mettre le type d, au lieu du type f.

Prenons un autre exemple où nous voulons supprimer des fichiers de plus de 100 Mo

$ find /home/bob/dir -type f -name *.log -size +10M -exec rm -f {} \;

Résumé

C'était donc un tutoriel rapide sur la commande Linux find . La commande find est l'une des commandes les plus essentielles du terminal Linux, qui permet de rechercher très facilement des fichiers. C'est un must pour tous les administrateurs système. Alors apprenez-le. Avez-vous des questions ? Laissez un commentaire ci-dessous.


Linux
  1. 7 Exemples de commandes Linux df

  2. 8 Exemples de commandes Linux TR

  3. Exemples de commande rm sous Linux

  4. trouver des exemples de commandes sous Linux

  5. Exemples de commandes ps sous Linux

Commande de recherche Linux avec des exemples pratiques

50 exemples simples et utiles de la commande Find sous Linux

15 exemples super utiles de la commande Find sous Linux

Tutoriel sur la commande de recherche Linux (avec exemples)

Maman, j'ai trouvé ! - 15 exemples pratiques de commande de recherche Linux

Exemples de commandes id sous Linux