• Assurez la sécurité des applications de la bonne manière! Détectez, protégez, surveillez, accélérez et plus encore…
  • Dans sa forme de base, la recherche est facile. En même temps, cela peut être complexe avec le nombre d'options, de tests et d'actions disponibles.

    La commande find est un outil incroyablement puissant, et faire des efforts pour l'apprendre peut être gratifiant. Il vous aidera à effectuer efficacement diverses tâches d'administration système, telles que la gestion de l'espace disque, les opérations de fichiers récursives et les sauvegardes.

    La commande de recherche de Linux recherche les fichiers et les dossiers en fonction des critères que vous définissez et vous permet d'effectuer une action sur les résultats de la recherche. La syntaxe de find est comme ceci:

    $ find directory-to-search criteria action

    • Le répertoire vers la recherche est le point de départ à partir duquel find commence la recherche de fichiers. La recherche inclut tous les sous-répertoires de ce répertoire.
    • critère (test) indique les fichiers à rechercher
    • l'action indique quoi faire avec chaque fichier trouvé correspondant aux critères.

    Tests

    Rechercher par nom

    Voici un exemple simple. La commande suivante recherche le fichier a.txt dans le répertoire courant:

    $ find . -name "a.txt"
    ./a.txt

    • . fait référence au répertoire courant
    • -name test spécifie les critères à respecter

    Cette recherche avec -name test est sensible à la casse et ignore le fichier A.txt. Pour vous assurer que votre recherche est insensible à la casse -iname tester:

    $ find . -iname "a.txt"
    ./a.txt
    ./A.txt

    Pour rechercher tout .jpg fichiers image dans le répertoire actuel, utilisez le modèle générique *.jpg:

    $ find . -name "*.jpg"
    ./genxfacebook2.jpg
    ./genxfacebook1.jpg
    ./Moodle2.jpg
    ./moodle.jpg
    ./moodle/moodle1.jpg
    ./genxfacebook.jpg

    Vous pouvez utiliser le nom du répertoire dans lequel effectuer la recherche. Par exemple, pour rechercher toutes les images .jpg dans le répertoire / home:

    $ find /home -name "*.jpg"
    find: `/home/ubuntu/.ssh': Permission denied
    /home/vagrant/Moodle2.jpg
    /home/vagrant/moodle.jpg
    /home/me/hello.jpg
    find: `/home/me/testfiles': Permission denied
    find: `/home/me/data': Permission denied
    /home/me/water.jpg
    find: `/home/me/.cache': Permission denied

    Si vous voyez trop d'erreurs d'autorisations refusées, vous pouvez ajouter 2> / dev / null à la fin de la commande. Cela redirige les messages d'erreur vers le périphérique / dev / null et donne une sortie plus claire:

    find /home -name "*.jpg" 2>/dev/null
    /home/vagrant/Moodle2.jpg
    /home/vagrant/moodle.jpg
    /home/me/hello.jpg
    /home/me/water.jpg

    Recherche par type de fichier

    En utilisant l' -type test, vous pouvez rechercher des fichiers par type. Les types de fichiers peuvent être:

    f plain files
    d directories
    l symbolic links
    b block devices
    c character devices
    p named pipes
    s sockets

    Par exemple, l'utilisation du test -type d ne listera que les répertoires:

    $ find . -type d
    .
    ./.ssh
    ./.cache
    ./moodle

    Recherche par taille de fichier

    Vous devrez peut-être rechercher des fichiers volumineux et les supprimer. Dans l'exemple suivant, le test -size est suivi de la chaîne + 1G. Cela rechercherait tous les fichiers de plus de 1 Go.

    $ find . -size +1G 
    ./Microsoft_Office_16.29.19090802_Installer.pkg
    ./android-studio-ide-183.5692245-mac.dmg

    Le signe + signifie que les fichiers de recherche sont plus grands que le nombre suivant. Un symbole moins (-) peut être utilisé pour indiquer une valeur inférieure à. Ne pas utiliser de signe signifierait correspondre exactement à la taille.

    Le numéro est suivi de l'unité de taille de fichier. Les unités peuvent être:

    Personnage Unité de taille fine
    b 521 blocs bye
    c Octets
    k Kilobytes
    M Mégaoctets
    G gigaoctets

    Rechercher des répertoires et des fichiers vides

    Utiliser -empty testez pour trouver des répertoires vides et des fichiers comme celui-ci:

    $ find . -empty
    ./.cloud-locale-test.skip
    ./datafiles
    ./b.txt
    ...
    ./.cache/motd.legal-displayed

    Recherche par heure de modification de fichier

    Vous pouvez rechercher tous les fichiers et répertoires en fonction de l'heure de création ou de modification avec -cmin tester. Pour rechercher tous les fichiers modifiés au cours des 60 dernières minutes (moins de 60), utilisez -60 comme ça:

    $ find . -cmin -60
    .
    ./a.txt
    ./datafiles

    Pour les fichiers modifiés à tout moment avant les 60 dernières minutes, utilisez +60.

    Recherche par temps d'accès

    Vous pouvez rechercher des fichiers par heure du dernier accès, avec -atime tester. Par exemple, la commande suivante recherche les fichiers non consultés au cours des 180 derniers jours:

    $ find . -atime +180

    Ceux-ci peuvent être déplacés vers un périphérique de sauvegarde si l'espace disque est insuffisant.

    Rechercher par nom d'utilisateur

    Avec -user Nom d'utilisateur test, vous pouvez rechercher tous les fichiers et répertoires appartenant à un utilisateur. Par exemple, la commande suivante recherche tous les fichiers et répertoires appartenant à l'utilisateur ubuntu dans le répertoire / home:

    $ find /home -user ubuntu 2>/dev/null
    /home/ubuntu
    /home/ubuntu/.bash_logout
    /home/ubuntu/.bashrc
    /home/ubuntu/.ssh
    /home/ubuntu/.profile

    Recherche par mode

    Vous souhaitez rechercher des fichiers définis dans un mode spécifique, c'est-à-dire disposer d'un ensemble d'autorisations spécifique? Utilisez -perm test. L'exemple suivant recherche les fichiers avec des autorisations définies sur 777:

    $ find /home -perm 777

    Les opérateurs

    Vous pouvez utiliser les trois opérateurs logiques suivants pour combiner plusieurs tests dans une seule commande de recherche:

    • -et
    • Ou
    • -ne pas

    Par exemple, la commande suivante recherche les fichiers de plus de 100 Mo appartenant à l'utilisateur moi:

    $ find /home  -user me  -and  -size +100M  2>/dev/null
    /home/me/kali-linux-2020.3-installer-netinst-i386.iso

    La commande suivante recherche les fichiers de plus de 100 Mo appartenant à l'utilisateur moi ou à l'utilisateur vagrant:

    $ find /home \( -user vagrant -or -user me \)  -and  -size +100M  2>/dev/null
    /home/vagrant/LibreOffice_7.0.1_Linux_x86-64_deb.tar.gz
    /home/me/kali-linux-2020.3-installer-netinst-i386.iso

    Vous devez placer une barre oblique inverse devant les parenthèses afin d'empêcher le shell d'essayer de les interpréter.

    Actions

    find vous donne les résultats de la recherche, puis le choix d'effectuer une action sur eux. Voici quelques actions prédéfinies:

    Action Description
    -effacer Supprime les fichiers qui correspondent aux critères de recherche
    -ls Affiche une sortie ls détaillée avec la taille des fichiers et le nombre d'inodes
    -impression Affiche le chemin complet des fichiers correspondants. C'est l'action par défaut si aucune autre action n'est spécifiée
    Exec- Exécute la commande qui suit, sur chaque ligne de la sortie de recherche

    Donc, si vous souhaitez rechercher tous les fichiers vides et les supprimer, voici comment vous pouvez le faire:

    $ find . -empty -delete

    Attention: avant d'utiliser l'action de suppression, il est toujours prudent d'exécuter la commande une fois avec -print action et confirmez les résultats.

    La -exec l'action est spéciale. Il vous permet d'exécuter une commande de votre choix sur les résultats de la recherche. C'est comme ça:

    -exec command {} \;

    Ici

    • commander est la commande que vous souhaitez exécuter sur les résultats de la recherche, comme rm, mv ou cp.
    • {} représente les résultats de la recherche.
    • La commande se termine par un point-virgule échappé par une barre oblique inverse.

    Ainsi, la commande pour rechercher et supprimer tous les fichiers vides peut être écrite comme ceci:

    $ find . -empty -exec rm {} \;

    Voici un autre exemple utilisant -exec action. La commande suivante copie tout .png fichiers image dans le répertoire backup / images:

    $ find . -name "*.png" -exec cp {} /backups/images \;

    Conclusion

    Vous pouvez utiliser le Commande Linux find pour rechercher des fichiers en fonction du nom, de la date du dernier accès, de la date de la dernière modification, du nom de l'utilisateur (propriétaire), du nom du groupe, de la taille, des autorisations et de divers autres critères. Avec ces résultats de recherche, vous pouvez effectuer des actions sur eux, comme les supprimer, les copier ou les déplacer vers un autre emplacement.

    Une fois que vous maîtrisez la commande find, elle peut être d'une grande aide et peut simplifier l'administration du système tâches pour vous. Et la clé pour le maîtriser est de le pratiquer et de l'utiliser!