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

40 meilleurs exemples de commande Find sous Linux

exemples de commandes wget
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™.

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

Find specific files by name or 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

Looking for specific files in another directory

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

Search for files by 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

Find files and directories by name

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.

Find files or directories only

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

Case insensitive find command

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

Search for a file from multiple directories

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

Find multiple files with different extensions from all directories

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

Find files containing certain text

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

Find files of a certain size – equal to 30MB

Pour rechercher trouver tous les fichiers 30 Mo

find / -size 30M

Find files larger than a specified size

find -size +2M

Sortie

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

Find files less than 10MB in the current directory

find . -type f -size -10M

Find files with sizes between 100-200MB

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

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

Look for directories larger than 20kb

find / -type d -size +20k

Find empty files and directories.

Fichiers

find ./ -type f -size 0

or

find ./ -type f –empty

Partages de fichiers

find ./ -type d –empty

Find files by age or modification time

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.

By modification date

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 

Find files based on access or 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

Find files modified within the last n days

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 

Find files modified within a specific period.

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

Files and directories accessed within the last 10 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
./.profileroot@ubuntu1804:~#

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.

Find files with permission 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.

Find files writable by the owner

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

Find files owned by a user

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

Find specific files owned by a user

Trouver tous les fichiers texte appartenant à Jack

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

Sortie

/home/jack/docs/file32.txt

Find and list files and directories together with their permissions

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.

Find files and change permissions

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.

jack@ubuntu1804:~/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)

Résultats

jack@ubuntu1804:~/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

Find and change file and directory permissions

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

Find and copy files or directories

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.

Find and copy one file to many directories

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/

Find and move files to a different directory

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

Find certain files and move to a specific different folder

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/

Find and move files based on age

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

Find and delete specific files only

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 {} ;

Remove both files and directories

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

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

Delete by 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.

Find and delete files older than n days

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 fichiers .bak plus de 20 jours.

Find and delete directories only

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 le dir22 qui va maintenant être supprimé.

Find and remove empty files

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
trouver ./ -type f -taille 0 –supprimer

Find and remove empty directories

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.

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