40 meilleurs exemples de commande Find sous Linux

La commande Linux find est un outil puissant qui permet aux administrateurs système de localiser et de gérer des fichiers et des répertoires en fonction d’un large éventail de critères de recherche. Il peut trouver des répertoires et des fichiers par leur nom, leur type ou leur extension, leur taille, leurs autorisations, etc.

Outre la localisation de fichiers et de répertoires, la combinaison de la commande find avec d’autres vous permet d’agir sur les résultats. L’ajout de l’option -exec permet aux administrateurs système d’exécuter des commandes externes et d’effectuer des actions telles que copier, déplacer, supprimer ou modifier les autorisations des fichiers correspondant aux critères spécifiés tels que la taille, le nom, etc.

Dans cet article, nous commencerons par expliquer les commandes de recherche de base de Linux avec des exemples. Cela vous montrera comment trouver des fichiers et des répertoires. Nous vous montrerons ensuite comment utiliser l’option -exec pour agir sur les fichiers ou répertoires en fonction de leur taille, des permissions, etc.

La syntaxe générale de la commande find est

find {path} {name -of-file or dir-to-search} {action-to-take}

Où,

  • path spécifie le répertoire.
  • name-of file or dir-to-search : nom du fichier ou du répertoire à rechercher
  • action à entreprendre : telle que copier, supprimer, déplacer, etc.

Dans ce didacticiel, nous expliquerons comment localiser les fichiers et les répertoires correspondant aux modèles spécifiés. Nous verrons également comment effectuer des actions sur les fichiers ou répertoires que la commande find localise. Le guide est basé sur Ubuntu mais s’applique à la plupart des distributions et versions Linux.

Table des matières

Rechercher des fichiers et des répertoires

Rechercher des fichiers spécifiques par nom ou extension

Pour rechercher un fichier spécifique, exécutez la commande suivante à partir de la racine (/). La commande contient le nom exact du fichier que vous recherchez.

find . -name file22.txt

Production

./test/file22.txt
./sales/file22.txt

Veuillez noter que les résultats incluent le chemin. Ceci est important si vous ne connaissez pas le répertoire où se trouve le fichier ou s’il se trouve à plusieurs endroits.

Vous pouvez également rechercher le fichier dans un autre répertoire tout en restant à l’emplacement actuel. Dans ce cas, vous devez fournir le chemin du répertoire dans lequel vous souhaitez effectuer la recherche.

find ./test -name file22.txt

Recherche de fichiers spécifiques dans un autre répertoire

Dans notre cas, nous chercherons tous ceux commençant par le fichier lettres dans le répertoire test.

find ./test -name file*

Production

./test/file22.txt
./test/file30.doc
./test/file1.txt
./test/file5,doc

Rechercher des fichiers par extension

Pour trouver un fichier sous Linux avec une certaine extension, ajoutez-le à la commande.

find . -name *.txt

Production

./test/subtest/subfil.txt
./test/file22.txt
./test/file1.txt
./home1/files32.txt
./home2/file22.txt
./qa/tags.txt

Rechercher des fichiers et des répertoires par nom

Utilisez la commande ci-dessous pour rechercher des fichiers et des répertoires commençant par les lettres qa. Dans notre ordinateur, nous avons les fichiers qatree.txt et qa.txt ainsi qu’un répertoire nommé qa.

  Comment contrôler la vitesse du ventilateur du processeur sous Linux

Si nous exécutons la commande;

find ./ -name "qa*"

Il renvoie la sortie suivante

./test/qatree.pdf
./test/qa.txt
./home/qa

La commande renvoie à la fois les fichiers et les répertoires correspondant aux critères de recherche. Pour rechercher uniquement des fichiers ou des répertoires, vous devez le spécifier dans la commande.

Rechercher uniquement des fichiers ou des répertoires

Pour les fichiers uniquement, utilisez le commutateur de type f.

Fichiers uniquement

find ./ -type f -name "qa*"

Production

./test/qatree.pdf
./test/qa.txt

Annuaires uniquement

Ajoutez l’option de type d pour localiser uniquement les répertoires.

find ./ -type d -name "qa*"

Production

./home/qa

Commande de recherche insensible à la casse

Toutes les recherches avec le commutateur -name sont sensibles à la casse et ne donneront pas de résultats en majuscules. Pour obtenir tous les cas, utilisez l’option -iname.

find ./ -iname "qa*"

Production

./test/qatree.pdf
./test/qa.txt
./test/QAtest.txt
./home/qa

Rechercher un fichier dans plusieurs répertoires

Pour trouver les fichiers dans différents répertoires, ajoutez leurs chemins dans la commande. Dans notre cas, nous vérifierons dans les répertoires test et numérique.

find ./test ./numeric -name file22.txt -type f

Production

./test/file22.txt
/root/numeric/file22.txt

Trouver plusieurs fichiers avec différentes extensions de tous les répertoires

Vous pouvez utiliser la commande find pour localiser plusieurs fichiers qui partagent les différentes extensions telles que *.doc, *.txt *.pdf, etc. Cela peut être fait séparément, une extension à la fois, ou en utilisant une seule commande qui inclut toutes les extensions souhaitées.

trouver . -type f ( -nom « *.txt » -o -nom « *.pdf » -o -nom « *.doc » )

production

./test/subtest/subfil.txt
./test/qatree.pdf
./test/file22.txt
./test/qa.txt
./test/file30.doc
./books/acro.pdf
./data1/FILE22.txt
./docs/files32.txt

Rechercher des fichiers contenant un certain texte

Parfois, vous souhaitez accéder à un fichier contenant un certain texte mais ne pouvez pas vous rappeler son nom de fichier ou son emplacement. Cette commande vous permet de retrouver tous les fichiers contenant votre texte cible.

Pour rechercher tous les fichiers contenant le mot hyperconvergence », utilisez ;

find / -type f -exec grep -l -i "hyperconvergence" {} ;

Production

/root/numeric/hci
/root/HCIP

L’option –i permet à la commande d’ignorer les majuscules et trouvera le texte, qu’il soit en majuscule ou non, c’est-à-dire hyperconvergence, Hyperconvergence , etc.

Pour rechercher les fichiers dans un répertoire spécifique, ajoutez-les simplement à la commande

find ./numeric -type f -exec grep -l -i "hyperconvergence" {} ;

Production

./numeric/hci

Explorez d’autres exemples de commandes grep.

Rechercher des fichiers et des répertoires en fonction de leur taille

Vous pouvez trouver tous les fichiers ou répertoires qui sont plus petits, égaux ou supérieurs à une certaine taille, dans une certaine plage ou vides. Utilisez le format de taille approprié en fonction du type de fichiers ou de répertoires que vous recherchez.

Les options de taille incluent ;

c – octets

k – kilo-octets

M – Mégaoctets

G – Gigaoctets

Trouver des fichiers d’une certaine taille – égale à 30 Mo

Pour rechercher, trouvez tous les fichiers de 30 Mo

find / -size 30M

Rechercher des fichiers plus grands qu’une taille spécifiée

find -size +2M

Production

. /Downloads/ubuntu18043.iso 
./.cache/pip/http/6/e/3/8/3/6e38383f41850c3e5705d48116bc52f81b92a80500f414305057 7a9c

Rechercher des fichiers de moins de 10 Mo dans le répertoire actuel

find . -type f -size -10M

Rechercher des fichiers dont la taille est comprise entre 100 et 200 Mo

Lors de la recherche de fichiers dans une plage spécifique, par exemple entre 100 et 200 Mo

find / -size +100M -size -200M

Rechercher des répertoires de plus de 20 Ko

trouver / -type d -taille +20k

Trouvez des fichiers et des répertoires vides.

Des dossiers

trouver ./ -type f -taille 0

ou

find ./ -type f –empty

Annuaires

find ./ -type d –empty

Rechercher des fichiers par âge ou heure de modification

Rechercher des fichiers de plus de n jours

find /path/ -type f -name '*.txt' -mtime +8

Le -mtime +8 recherchera les fichiers txt datant de plus de 8 jours.

Par date de modification

Cela recherchera les fichiers modifiés au cours des 17 dernières heures

find . -mtime -17 -type f 

Recherche les répertoires modifiés au cours des 10 derniers jours

find . -mtime -10 -type d 

Rechercher des fichiers en fonction de l’accès ou de la modification

Rechercher des fichiers en fonction de la date ou de l’heure d’accès. Cela vous permet de voir les fichiers qui ont été ou n’ont pas été consultés au cours d’une période spécifiée.

  Comment utiliser la commande fd sous Linux

Pour voir les fichiers qui n’ont pas été consultés au cours des 10 derniers jours dans le répertoire personnel.

find /home -atime +10

Fichiers consultés il y a exactement 10 jours

find /home -atime 10

Consulté au cours des 10 derniers jours

find /home -atime -10

Rechercher les fichiers modifiés au cours des n derniers jours

Vous pouvez également rechercher les fichiers dans le répertoire /home modifiés au cours des 10 derniers jours à l’aide de la commande ;

find /home -mtime -10 

Trouvez les fichiers modifiés dans une période spécifique.

Par exemple, tous les fichiers modifiés il y a entre 6 et 15 jours dans le répertoire home.

find /home -type f -mtime +6 -mtime -15

Fichiers et répertoires consultés au cours des 10 dernières minutes

Pour trouver les fichiers consultés au cours des 10 dernières minutes, utilisez l’option -amin.

find . -amin -10 -type f

Production

./.bash_history
./[email protected]:~#

Répertoires consultés au cours des 10 dernières minutes

find . -amin -10 -type d

Rechercher des fichiers correspondant à des autorisations spécifiques

Syntaxe

$ find -perm mode

Où mode est l’autorisation qui est soit numérique comme 644, 655, 700, 777, etc., soit en lettres comme u=x, a=r+x, etc.

Vous pouvez spécifier le mode des trois manières suivantes.

  • Sans préfixe lorsque vous souhaitez rechercher des fichiers avec les autorisations exactes spécifiées.
  • Avec « – » pour les fichiers avec au moins l’autorisation spécifiée. Cela renvoie les fichiers avec les autorisations spécifiées ainsi que les autorisations supérieures supplémentaires.
  • L’utilisation de « / » nécessite de spécifier le propriétaire ou le groupe avec l’autorisation d’accéder au fichier.
  • Rechercher des fichiers avec la permission 777

    find -perm 777

    Production

    ./file1

    Trouver des fichiers avec au moins 766
    trouver -perm -766

    Production

    ./file2
    ./file1

    La commande recherche tous les fichiers dans lesquels le

    • Le propriétaire du fichier dispose des autorisations de lecture/écriture/exécution.
    • Le groupe a des autorisations de lecture/écriture
    • D’autres ont l’autorisation de lecture/écriture

    En tant que tel, il renvoie deux fichiers qui répondent à ce critère – fichier1 et fichier2. Les fichiers n’ont pas besoin d’avoir les autorisations 766 exactes et peuvent en avoir d’autres aussi longues mais doivent avoir au moins les autorisations spécifiées.

    Trouver des fichiers accessibles en écriture par le propriétaire

    Nous allons maintenant utiliser le « / » pour rechercher des fichiers accessibles en écriture soit par leur propriétaire, soit par un groupe, soit par d’autres.

    find -perm /222
    .
    ./file2
    ./file3
    ./file1

    Ce qui précède recherche les fichiers accessibles en écriture par leur propriétaire ou leur groupe.
    Cela renvoie des fichiers accessibles en écriture par l’un ou l’autre, mais pas nécessairement par les deux. Pour voir les fichiers, où les deux ont des autorisations en écriture, utilisez le préfixe -.

    find -perm -220

    Production

    ./file2
    ./file1

    Rechercher des fichiers appartenant à un utilisateur

    Trouver tous les fichiers appartenant à Jack

    find /home -user jack

    Production

    /home/jack
    /home/jack/examples.desktop
    /home/jack/.gnupg
    /home/jack/.gnupg/private-keys-v1.d
    /home/jack/ans.cgi

    Rechercher des fichiers spécifiques appartenant à un utilisateur

    Trouver tous les fichiers texte appartenant à Jack

    find /home -user jack -iname "*.txt"

    Production

    /home/jack/docs/file32.txt

    Rechercher et répertorier les fichiers et répertoires avec leurs autorisations

    find -name "*.conf" | ls -l

    Production

    total 120
    drwxr-xr-x 2 root root 4096 Dec 31 13:19 backup2
    drwxr-xr-x 2 root root 4096 Jan 4 11:57 Desktop
    drwxr-xr-x 2 root root 4096 Dec 31 11:50 Documents
    drwxr-xr-x 2 root root 4096 Dec 31 12:27 Downloads
    -rw-r--r-- 1 root root 0 Jan 4 12:02 file22.doc
    drwxr-xr-x 2 root root 4096 Jan 4 12:14 file23
    -rw-r--r-- 1 root root 0 Jan 4 12:23 file23.txt

    Trouvez et agissez sur les résultats

    Dans cette section, nous verrons comment vous pouvez agir sur les fichiers qui correspondent au modèle spécifié dans la commande find.

    Rechercher des fichiers et modifier les autorisations

    Recherchez et modifiez les autorisations de certains types de fichiers. Dans notre cas, nous travaillerons avec des fichiers PHP avec différentes autorisations, comme indiqué ci-dessous.

    [email protected]:~/ver$ ls -la
    
    total 8
    drwxrwxr-x 2 jack jack 4096 Jan 3 14:11 .
    drwxr-xr-x 8 jack jack 4096 Jan 3 14:05 ..
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:06 ans.php
    -rw-rw-r-- 1 jack jack 0 Jan 3 14:11 base.php
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:06 query.php
    -rw-rw-r-- 1 jack jack 0 Jan 3 14:11 qust.php
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:06 text.php
    -rw-rw-r-- 1 jack jack 0 Jan 3 14:11 vary.php

    Nous allons maintenant rechercher tous les fichiers PHP (ci-dessus) et remplacer leurs permissions par 755

    find ver -name "*.php" -type f -exec chmod 755 {} ;

    La commande recherche les fichiers PHP dans le répertoire ver, puis définit leur autorisation sur 755 (rwxr-xr-x)

      Contemplez les étoiles sur votre PC Linux avec Stellarium

    Résultats

    [email protected]:~/ver$ ls -la
    total 8
    drwxrwxr-x 2 jack jack 4096 Jan 3 14:11 .
    drwxr-xr-x 8 jack jack 4096 Jan 3 14:05 ..
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:06 ans.php
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:11 base.php
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:06 query.php
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:11 qust.php
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:06 text.php
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:11 vary.php

    Rechercher et modifier les autorisations de fichiers et de répertoires

    Trouvez des fichiers avec 644 autorisations et modifiez-les pour avoir 655 autorisations

    find . -type f -perm 644 -exec chmod 655 {} ;

    Vous pouvez également rechercher des répertoires avec 644 autorisations et les remplacer par 755.

    find . -type d -perm 644

    Production

    ./docs   

    Le dossier docs a 644 autorisations

    drwxrwxr-x 2 jack jack 4096 Jan 3 12:45 docs

    Pour le mettre à 755, nous exécutons

    find . -type d -perm 644 -exec chmod 755 {} ;

    Maintenant, nous pouvons vérifier à nouveau pour voir exactement ce que 755

    find . -type d -perm 755

    Production
    .
    ./docs

    D’en haut, nous pouvons voir que les répertoires root et docs ont les 755 autorisations.

    La commande Ls –la donne les détails suivants

    drwxr-xr-x 2 jack jack 4096 Jan 3 12:45 docs

    Rechercher et copier des fichiers ou des répertoires

    Rechercher et copier un fichier spécifique dans un répertoire

    La commande ci-dessous trouvera le fichier file22.txt et le copiera dans le répertoire ~/tmp/images.

    find -iname file22.txt -exec cp {} ~/tmp/images ;

    Rechercher et copier un type de fichiers dans un répertoire

    Pour rechercher des fichiers tels que des images avec l’extension jpg dans le répertoire actuel et les copier dans un emplacement différent, comme un dossier d’images, utilisez ;

    find -iname '*.jpg' -exec cp {} ~/tmp/images ;

    Cela trouvera et copiera tous les fichiers jpg dans le dossier ~/tmp/images.

    Trouver et copier un fichier dans plusieurs répertoires

    Trouvez et copiez un seul vers plusieurs répertoires.

    find ~/tmp/dir1/ ~/tmp/dir2/ $HOME/3/ -maxdepth 0 -exec cp ~/numeric/hci {} ;

    Cela trouvera le fichier hci et le copiera dans les trois répertoires de /tmp/dir1/ /tmp/dir2/ et $HOME/3/

    Rechercher et déplacer des fichiers vers un autre répertoire

    Pour déplacer un fichier connu d’un répertoire à un autre. Pour déplacer le fichier universal.php ;

    find ~/folder/ -type f -name universal.php -exec mv {} ~/numeric/ ;

    Rechercher et déplacer des fichiers avec une certaine extension vers un autre dossier

    find ~/numeric/ -type f -name '*.php' -exec mv {} ~/folder/ ;

    Trouver certains fichiers et déplacer vers un autre dossier spécifique

    find -type f -name uni*.* -exec mv {} ~/unifiles/ ;

    La commande recherche tous les fichiers avec des noms commençant par uni et ayant n’importe quelle extension. Il les déplace ensuite dans le répertoire /unifiles/

    Rechercher et déplacer des fichiers en fonction de leur ancienneté

    Recherchez et déplacez les fichiers plus anciens que les jours spécifiés vers un emplacement différent, tel que l’archive.

    find /path/ -type f -name '*.pdf' -mtime +20 -exec mv {} /backup1/ ;

    Cela recherchera les fichiers pdf de plus de 20 jours et les déplacera vers le répertoire backup1.

    Rechercher et supprimer des fichiers et des répertoires

    La syntaxe pour rechercher et supprimer des fichiers ou des répertoires dans le répertoire courant est

    trouver . -type f -name « fichier à supprimer » -exec rm -f {} ; pour supprimer uniquement les fichiers ou

    trouver . -type d -name « répertoire à supprimer » -exec rm -rf {} ; pour supprimer uniquement les répertoires

    Rechercher et supprimer uniquement des fichiers spécifiques

    Pour rechercher et supprimer des fichiers commençant par til, utilisez ;

    find . -type f -name "til*" -exec rm {} ; 

    Pour rechercher et supprimer des répertoires commençant par til

    find . -type d -name "til*" -exec rm {} ;

    Supprimer les fichiers et les répertoires

    find . -name "til*" -exec rm -rf {} ; 

    Cela supprimera à la fois les fichiers et les répertoires commençant par les lettres til.

    Supprimer par extension

    Vous trouverez ci-dessous comment localiser et supprimer tous les fichiers txt du répertoire actuel. Remplacez le txt par une autre extension telle que bak, pdf ou toute autre que vous souhaitez supprimer.

    find . -type f -name "*.txt" -exec rm -f {} ;

    Si vous souhaitez que le système vous demande de confirmer avant de supprimer chaque fichier, ajoutez l’option -i comme ci-dessous.

    find . -type f -name "*.txt" -exec rm -i {} ;

    Production

    rm: remove regular empty file './File22.txt'? y
    rm: remove regular empty file './file22.txt'? y
    rm: remove regular empty file './file23.txt'?

    Par défaut, le -rm ne supprimera pas les répertoires et vous devez utiliser l’option –r pour assurer une suppression récursive. Cela garantit la suppression des répertoires vides et ceux contenant des fichiers. L’option -f force la suppression et est utilisée à la fois pour les fichiers et les répertoires.

    Rechercher et supprimer des fichiers de plus de n jours

    Recherchez et supprimez les fichiers de sauvegarde de plus de 20 jours du répertoire actuel.

    find . -type f -name '*.bak' -mtime +20 -exec rm {} ;

    Cela supprimera tous les fichiers .bak de plus de 20 jours.

    Rechercher et supprimer des répertoires uniquement

    Pour supprimer un répertoire appelé dir22

    find . -type d -name dir22 -exec rm -rf {} ;

    Assurez-vous de respecter la casse du nom de répertoire ou utilisez l’option -iname.

    find . -type d -iname Dir22 -exec rm -rf {} ;

    Supprime à la fois Dir22 et dir22

    Pour confirmer avant la suppression, utilisez l’option -i.

    find . -type d -iname Dir22 -exec rm -rf -i {} ;

    Production
    rm : supprimer le répertoire ‘./Dir22’ ? n
    rm : supprimer le répertoire ‘./dir22’ ? y

    Dans notre cas, nous avons tapé n pour le répertoire Dir22 qui ne sera pas supprimé et y pour le dir22 qui sera désormais supprimé.

    Rechercher et supprimer des fichiers vides

    Vous pouvez utiliser l’une des commandes suivantes pour localiser les fichiers vides et les supprimer automatiquement.

    find ./ -type f -size 0 -exec rm -f {} ;

    ou
    trouver ./ -type f -taille 0 | xargs rm-f
    ou
    trouver ./ -type f -taille 0 –supprimer

    Rechercher et supprimer des répertoires vides

    Pour supprimer les répertoires vides, nous utiliserons l’option d.

    find ./ -type d -empty -exec rmdir {} ;

    Une autre alternative consiste à utiliser delete au lieu de remove.

    find ./ -type d -empty -delete

    Veuillez noter que la suppression de fichiers système ou critiques de votre ordinateur peut endommager le système d’exploitation ou les applications ou entraîner la perte de vos données importantes.

    Pour éviter les suppressions accidentelles, il est recommandé d’utiliser un compte utilisateur non root. Assurez-vous également que vous supprimez les bons fichiers qui ne sont pas utiles et que vous disposez d’une sauvegarde de tous vos fichiers de données au cas où.

    Et après?

    Allez-y et essayez les commandes de recherche Linux ci-dessus dans votre environnement de laboratoire ou de NON PRODUCTION. Voyez si vous pouvez en utiliser pour automatiser le nettoyage du système de fichiers avec Crontab. Et, pour maîtriser Linux, consultez ceci Cours en ligne.