• Assurez la sécurité des applications de la bonne manière! Détectez, protégez, surveillez, accélérez et plus encore…
  • Le Linux find command 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 des find La commande avec d'autres vous permet d'agir sur les résultats. Ajout du -exec L'option permet aux administrateurs système d'exécuter des commandes externes et d'effectuer des actions telles que la copie, le déplacement, la suppression ou la modification des 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 répertoires. Nous vous montrerons ensuite comment utiliser le -exec option pour agir sur les fichiers ou répertoires en fonction de leur taille, autorisations, 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-to-take: comme copier, supprimer, déplacer, etc.

    Dans ce didacticiel, nous expliquerons comment localiser les fichiers et 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 de Linux.

    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

    Sortie

    ./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 les lettres filet dans le répertoire de test.

    find ./test -name file*

    Sortie

    ./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

    Sortie

    ./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 le qatree.txt et qa.txt fichiers ainsi qu'un répertoire du nom qa.

    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 type f interrupteur.

    Fichiers uniquement

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

    Sortie

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

    Répertoires uniquement

    Ajouter l' type d option pour localiser uniquement les répertoires.

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

    Sortie

    ./home/qa

    Commande de recherche insensible à la casse

    Toutes les recherches avec -name switch sont sensibles à la casse et ne donnera pas de résultats avec des majuscules. Pour obtenir tous les cas, utilisez le -iname option.

    find ./ -iname "qa*"

    Sortie

    ./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 enregistrerons le test et numeric répertoires.

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

    Sortie

    ./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.

    find . -type f ( -name "*.txt" -o -name "*.pdf" -o -name "*.doc" )

    sortie

    ./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 du texte

    Parfois, vous souhaitez accéder à un fichier contenant du texte mais ne pouvez pas rappeler son nom de fichier ou son emplacement. Cette commande vous permet de trouver 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" {} ;

    Sortie

    /root/numeric/hci
    /root/HCIP

    La –i L'option permet à la commande d'ignorer les cas et trouvera le texte en majuscules 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" {} ;

    Sortie

    ./numeric/hci

    Explorez davantage 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

    Rechercher des fichiers d'une certaine taille - égale à 30 Mo

    Pour rechercher trouver tous les fichiers 30 Mo

    find / -size 30M

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

    find -size +2M

    Sortie

    . /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

    Lorsque vous recherchez des fichiers dans une plage spécifique, par exemple entre 100 et 200 Mo

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

    Recherchez les répertoires de plus de 20 Ko

    find / -type d -size +20k

    Trouvez des fichiers et des répertoires vides.

    Fichiers

    find ./ -type f -size 0

    or

    find ./ -type f –empty

    Répertoires

    find ./ -type d –empty

    Rechercher des fichiers par âge ou heure de modification

    Rechercher des fichiers datant de plus de n jours

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

    La -mtime +8 cherchera txt les fichiers 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

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

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

    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 /home répertoire modifié au cours des 10 derniers jours à l'aide de la commande;

    find /home -mtime -10 

    Recherchez les fichiers modifiés dans une période donnée.

    Par exemple, tous les fichiers modifiés entre 6 et 15 jours dans le répertoire personnel.

    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

    Sortie

    ./.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, telle que 644, 655, 700, 777, etc., ou des lettres telles que u=x, a=r+x, et ainsi de suite

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

    1. Sans préfixe lorsque vous souhaitez rechercher des fichiers avec les autorisations exactes spécifiées.
    2. Avec "-“Pour les fichiers avec au moins l'autorisation spécifiée. Cela renvoie les fichiers avec les autorisations spécifiées ainsi que des autorisations supplémentaires plus élevées.
    3. En utilisant "/»Nécessite la spécification du propriétaire ou du groupe avec l'autorisation du fichier.

    Rechercher des fichiers avec autorisation 777

    find -perm 777

    Sortie

    ./file1

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

    Sortie

    ./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 dispose d'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 l'exact 766 autorisations et peuvent avoir des autorisations supplémentaires aussi longues mais doivent avoir au moins celles spécifiées.

    Rechercher les fichiers accessibles en écriture par le propriétaire

    Nous allons maintenant utiliser le "/»Pour rechercher les fichiers accessibles en écriture par leur propriétaire, leur groupe ou d'autres.

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

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

    find -perm -220

    Sortie

    ./file2
    ./file1

    Rechercher des fichiers appartenant à un utilisateur

    Trouver tous les fichiers appartenant à Jack

    find /home -user jack

    Sortie

    /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"

    Sortie

    /home/jack/docs/file32.txt

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

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

    Sortie

    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 des autorisations différentes, 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 chercher 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 ver répertoire, puis définit leur autorisation sur 755 (rwxr-xr-x)

    Resultats

    [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

    Rechercher des fichiers avec 644 autorisations et les modifier pour avoir 655 autorisations

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

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

    find . -type d -perm 644

    Sortie

    ./docs   

    Le dossier docs a 644 autorisations

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

    Pour le régler sur 755, nous courrons

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

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

    find . -type d -perm 755

    Sortie
    .
    ./docs

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

    Ls –la commande 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 file22.txt et copiez-le dans le ~/tmp/images répertoire.

    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 jpg extension dans le répertoire actuel et copiez-les 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 ~/tmp/images dossier.

    Rechercher et copier un fichier dans plusieurs répertoires

    Recherchez et copiez un seul dans plusieurs répertoires.

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

    Cela trouvera le fichier hci et copiez-le 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 vers un autre. Pour déplacer le universal.php fichier;

    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/ ;

    Trouvez certains fichiers et déplacez-vous vers un autre dossier spécifique

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

    La commande recherche tous les fichiers dont le nom commence par uni et ayant une extension. Il les déplace ensuite vers le répertoire /unifiles/

    Rechercher et déplacer des fichiers en fonction de l'âge

    Recherchez et déplacez les fichiers datant de plus de 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 dans 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 actuel est

    find . -type f -name "file to delete" -exec rm -f {} ; pour supprimer uniquement des fichiers ou

    find . -type d -name "dir-to-delete" -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 les fichiers et les répertoires commençant par les lettres til.

    Supprimer par extension

    Voici comment vous pouvez localiser et supprimer tout txt fichiers dans le répertoire courant. Remplace le txt avec une autre extension telle que bak, pdf ou tout autre que vous souhaitez supprimer.

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

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

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

    Sortie

    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 le –r option pour assurer une suppression récursive. Cela garantit la suppression des répertoires vides et de ceux contenant des fichiers. le -f L'option force la suppression et est utilisée à la fois pour les fichiers et les répertoires.

    Rechercher et supprimer des fichiers datant de plus de n jours

    Recherchez et supprimez les fichiers de sauvegarde datant de plus de 20 jours dans le répertoire actuel.

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

    Cela supprimera tout .bak fichiers datant de plus de 20 jours.

    Rechercher et supprimer uniquement des répertoires

    Pour supprimer un répertoire appelé dir22

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

    Assurez-vous que vous correspondez à la casse du nom de répertoire ou utilisez le -iname option.

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

    Supprime les deux Dir22 et dir22

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

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

    Sortie
    rm: supprimer le répertoire './Dir22'? n
    rm: supprimer le répertoire './dir22'? y

    Dans notre cas, nous avons tapé n pour l'annuaire Dir22 qui ne sera pas supprimé et y Pour les dir22 qui va maintenant être 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 {} ;

    or
    trouver ./ -type f -size 0 | xargs rm -f
    or
    find ./ -type f -size 0 –delete

    Rechercher et supprimer des répertoires vides

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

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

    Une autre alternative consiste à utiliser supprimer au lieu de supprimer.

    find ./ -type d -empty -delete

    Veuillez noter que la suppression du système ou des fichiers 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 d'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ù.

    Quelle est la prochaine?

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