find
est une commande pour filtrer récursivement les objets dans le système de fichiers sur la base d’un mécanisme conditionnel simple. Utiliser find
pour rechercher un fichier ou un répertoire sur votre système de fichiers. En utilisant l’indicateur-exec
, les fichiers peuvent être trouvés et immédiatement traités dans la même commande.,
Find Linux Files by Name or Extension
Use find
from the command line to locate a specific file by name or extension., L’exemple suivant recherche *.err
fichiers dans le /home/username/
répertoire et tous les sous-répertoires:
find /home/username/ -name "*.err"
Vous devriez voir un résultat similaire dans votre console:
/home/username/example.errThe matching file in the /home/username/ directory is "example.err"
Linux Courants Trouver des Commandes et la Syntaxe
Le find
commande prend généralement la forme suivante:
find options starting/path expression
- Le
options
attribut de contrôle le comportement et la méthode d’optimisation de la balisefind
processus., - Le
starting/path
attribut définit le répertoire de niveau supérieur oùfind
commence filtrage. - l’attribut
expression
contrôle les tests qui recherchent la hiérarchie des répertoires pour produire la sortie.
Trouver un Fichier sous Linux en Utilisant le nom de fichier
Pour trouver un fichier en utilisant le nom de fichier, utilisez la syntaxe find -name filename
. L’omission du chemin recherche le fichier sur l’ensemble du disque., Par exemple, vous pouvez trouver un fichier nommé example.err
située dans la /home/username
répertoire avec la commande suivante:
find -name example.err
Vous devriez voir un résultat similaire:
./username/example.err
Rechercher un Fichier dans Votre Répertoire Courant à l’Aide de la Commande Rechercher
jetez un oeil à l’exemple de structure de répertoires et de fichiers. Ils sont mentionnés dans les exemples de ce guide.,vous voulez trouver le fichier example.err
dans le répertoire ou l’un de ses sous-répertoires, vous pouvez lancer la commande suivante:
find . -name example.err
votre sortie ressemble à ce qui suit:
./example.err./directory_1/example.err
la sortie reflète directory_1
structure du répertoire:
├── directory_1│ ├── subdirectory_1│ │ └── example.err│ └── example.err
rechercher des fichiers image sous Linux en utilisant la ligne de commande
référençant la structure du fichier dans la section précédente, il y a une image nommée image01.png
qui se trouve>)s de la structure du répertoire.,
Pour trouver le fichier image01.png
, exécutez la commande suivante: find
commande qui localise tous les .png
fichiers stockés à l’intérieur de la balise /
répertoire.
find -name *.png
Vous devriez voir un résultat similaire:
./image01.png
Changer le type de fichier d’image et de regarder pour tout .jpg
fichiers dans le répertoire racine (/
):
find -name *.jpg
La sortie ressemble à l’exemple., Reportez-vous à l’exemple de structure de répertoire dans la section précédente pour afficher l’emplacement du fichier.
./web_files/unnamed.jpg
Trouver un Fichier Vide dans Votre Répertoire à l’Aide de la Ligne de Commande
Pour trouver un fichier vide dans votre répertoire à l’aide de la ligne de commande, exécutez la commande suivante:
find . -type f -empty
Si aucune sortie n’est retourné, alors il n’y a pas un fichier vide dans votre répertoire courant.
Options et optimisations pour trouver des fichiers sous Linux en utilisant la ligne de commande
la configuration par défaut pourfind
ignoressymbolic links., Si vous souhaitez que find
suive et renvoie des liens symboliques, ajoutez l’option -L
à la commande, comme indiqué ci-dessous:
find -O3 -L /var/www/ -name "*.html"
Cette commande active le niveau d’optimisation maximum (-O3
) et permet à find
de suivre des liens symboliques (-L
). find
recherche dans toute l’arborescence des répertoires sous /var/www/
les fichiers qui se terminent par .html
.,
find
optimise sa stratégie de filtrage pour augmenter les performances. Trois sélectionnables par l’utilisateur, l’optimisation des niveaux spécifiés comme des -O1
, -O2
et -O3
. L’optimisation -O1
est la valeur par défaut et force find
à filtrer en fonction du nom de fichier avant d’exécuter tous les autres tests.,
L’optimisation au niveau -O2
donne la priorité aux filtres de nom de fichier, comme dans -O1
, puis exécute tous les filtres de type de fichier avant de procéder à d’autres conditions plus gourmandes en ressources. Level -O3
l’optimisation permet à find
d’effectuer l’optimisation la plus sévère et de réorganiser tous les tests en fonction de leur dépense relative et de la probabilité de leur succès.,
Command | Description |
---|---|
-O1 |
Filter based on filename first (default). |
-O2 |
File name first, then file-type., |
-O3 |
Autoriser find automatiquement re-commander la recherche est basée sur l’utilisation efficace des ressources et de leur probabilité. de succès |
-maxdepth X |
Recherche de répertoire courant ainsi que tous les sous-répertoires X niveaux de profondeur. |
-iname |
Recherche sans tenir compte de la casse du texte., |
-not |
Return only results that do not match the test case. |
-type f |
Search for files. |
-type d |
Search for directories., |
rechercher des fichiers sous Linux par heure de Modification à l’aide de la ligne de commande
la commandefind
peut filtrer une hiérarchie de répertoires en fonction de la date, Par exemple, la commande suivante trouve tout fichier avec l’extension .err
qui a été modifié au cours des 7 derniers jours:
find / -name "*err" -mtime -7
l’exemple de commande renvoie la sortie suivante:
utilisez Grep pour rechercher des fichiers sous Linux en utilisant la ligne de la commande »>est uniquement capable de filtrer la hiérarchie des répertoires en fonction du nom et des métadonnées d’un fichier. Si vous devez rechercher en fonction du contenu du fichier, utilisez un outil commegrep., Considérons l’exemple suivant:
find . -type f -exec grep "test" '{}' \; -print
find . -type f -exec grep "test" '{}' \; -print
Cette commande recherches chaque objet dans la hiérarchie des répertoires (.
) qui est un fichier (-type f
), puis exécute la commande grep "test"
pour chaque fichier qui remplit les conditions. Les fichiers qui correspondent sont imprimés à l’écran (-print
). Les accolades ({}
) sont un espace réservé pour les résultats de recherche de correspondance., Les{}
sont placés entre guillemets simples ('
) pour éviter de remettre àgrep
un nom de fichier mal formé. La commande -exec
est terminée par un point-virgule (;
), qui doit être échappé (\;
) pour éviter l’interprétation par le shell.
Le fichier utilisé dans l’exemple (example.err
) a du texte à l’intérieur qui dit « test”., Lorsque vous exécutez l’exemple de commande, vous voyez une sortie similaire:
Grep a identifié chaque fichier dans le répertoire de travail actuel qui contient la chaîne « test”.,
Remarque
avant l’implémentation de la commande
find
de l’option-exec
, vous pouvez générer une sortie similaire à l’exemple ci-dessus en utilisant la commandexargs
:find . -type f -print | xargs grep "test"
traiter et rechercher des fichiers à l’aide de la commande find sous Linux
l’option-exec
exécute des commandes sur chaque objet qui correspond àfind
expression., Considérons l’exemple suivant:
find . -name "example.err" -exec chmod o+r '{}' \;
C’filtres de chaque objet dans la hiérarchie (.
) pour les fichiers nommés rc.conf
et exécute le chmod o+r
commande pour modifier les autorisations de fichier de la balise find
commande de résultats.
l’exemple de commande exécute et exécute l’option-exec
dans le répertoire racine du processusfind
. Utilisez -execdir
pour exécuter la commande spécifiée dans le répertoire où réside la correspondance., Cela peut atténuer les problèmes de sécurité et produire de meilleures performances pour certaines opérations.
Le -exec
ou -execdir
options exécuter sans plus d’indications. Si vous préférez être invité avant que des mesures soient prises, remplacez -exec
par -ok
ou -execdir
par -okdir
.
Comment trouver et supprimer des fichiers en utilisant la ligne de commande Linux
attention
utilisez cette option avec une extrême prudence.,
Ajout de l’option -delete
à la fin d’un match expression de supprimer tous les fichiers qui correspondent. Utilisez cette option lorsque vous êtes certains que les résultats ne concordent avec les fichiers que vous souhaitez supprimer.
Dans l’exemple ci-dessous, find
localise de manière récursive tous les fichiers dans la hiérarchie de départ dans le répertoire courant et supprime tous les fichiers qui se terminent avec le .err
poste:
find . -name "*.err" -delete
Encore quelques questions?,
Rejoignez notre communauté et postez vos questions à d’autres passionnés de Linode et Linux pour vous aider.
Questions Connexes: