Geekflare est soutenu par notre public. Nous pouvons gagner des commissions d'affiliation en achetant des liens sur ce site.
Partager sur:

Comment utiliser la commande find sous Linux? [Un guide du débutant]

Scanner de sécurité des applications Web Invicti – la seule solution qui offre une vérification automatique des vulnérabilités avec Proof-Based Scanning™.

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

De

  • 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

Le -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

Utilisez -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

Operators

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 solution -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 <em>command</em> {} \;

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!

Merci à nos commanditaires
Plus de bonnes lectures sur Linux
Alimentez votre entreprise
Certains des outils et services pour aider votre entreprise à se développer.
  • Invicti utilise Proof-Based Scanning™ pour vérifier automatiquement les vulnérabilités identifiées et générer des résultats exploitables en quelques heures seulement.
    Essayez Invicti
  • Web scraping, proxy résidentiel, proxy manager, web unlocker, moteur de recherche et tout ce dont vous avez besoin pour collecter des données Web.
    Essayez Brightdata
  • Semrush est une solution de marketing numérique tout-en-un avec plus de 50 outils de référencement, de médias sociaux et de marketing de contenu.
    Essayez Semrush
  • Intruder est un scanner de vulnérabilités en ligne qui détecte les failles de cybersécurité de votre infrastructure, afin d'éviter des violations de données coûteuses.
    Essayez Intruder