la commande Linux find
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.
en plus de localiser des fichiers et des répertoires, la combinaison de la commandefind
avec d’autres vous permet d’agir sur les résultats., L’ajout de l’option-exec
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 allons commencer par expliquer les commandes de base de recherche Linux avec des exemples. Cela vous montrera comment trouver des fichiers et des répertoires. Nous vous montrerons ensuite comment utiliser l’option-exec
pour agir sur les fichiers ou répertoires en fonction de leur taille, de leurs 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ù,
dans ce tutoriel, nous expliquerons comment localiser les fichiers et les répertoires correspondant aux modèles spécifiés. Nous verrons également comment effectuer des actions sur les fichiers ou répertoires localisés par la commande find. Le guide est basé sur Ubuntu mais est applicable à la plupart des distributions et versions Linux.
Rechercher des fichiers et des Répertoires
Rechercher des fichiers par nom ou l’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 inclure le chemin d’accès. Ceci est important si vous ne connaissez pas le répertoire où se trouve le fichier, ou lorsqu’il est dans plus d’un endroit.
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 où vous souhaitez rechercher.,
find ./test -name file22.txt
recherche de fichiers spécifiques dans un autre répertoire
dans notre cas, nous rechercherons tous ceux commençant par le fichier letters dans le répertoire test.
find ./test -name file*
Sortie
./test/file22.txt./test/file30.doc./test/file1.txt./test/file5,doc
Recherche de fichiers par extension
Pour trouver un fichier sous Linux avec une certaine extension, l’ajouter à 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 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 par le nom de qa
.,
Si nous exécutez la commande;
find ./ -name "qa*"
Il renvoie le résultat suivant
./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 des fichiers ou des répertoires, vous devez le spécifier dans la commande.
Rechercher des fichiers ou des répertoires
Pour les fichiers uniquement, utilisez la balise type f
interrupteur.
les Fichiers uniquement
find ./ -type f -name "qa*"
Sortie
./test/qatree.pdf./test/qa.txt
seulement les Répertoires
Ajoutez la balise type d
option pour localiser répertoires.,
find ./ -type d -name "qa*"
Sortie
./home/qa
casse trouver de la commande
Toutes les recherches avec des -name
switch sont sensibles à la casse et ne donnera pas de résultats avec des lettres majuscules. Pour obtenir tous les cas, utilisez l’option-iname
.
find ./ -iname "qa*"
Sortie
./test/qatree.pdf./test/qa.txt./test/QAtest.txt./home/qa
Rechercher un fichier à partir de plusieurs répertoires
Pour trouver les fichiers dans des répertoires différents, ajouter leurs chemins dans la commande., Dans notre cas, nous allons vérifier dans 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 des extensions différentes de tous les répertoires
Vous pouvez utiliser la commande find pour localiser plusieurs fichiers qui partagent les différentes extensions *.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
Rechercher des fichiers contenant du texte
Parfois, vous souhaitez accéder à un fichier contenant un texte, mais ne me souviens pas de son nom de fichier ou un emplacement. Cette commande vous permet de trouver tous les fichiers contenant votre texte cible.
pour rechercher tous les fichiers contenant le mot hyperconvergence”, utilisation;
find / -type f -exec grep -l -i "hyperconvergence" {} ;
Sortie
/root/numeric/hci/root/HCIP
L’option –i permet à la commande d’ignorer les cas et trouverez le texte en majuscule ou pas c’est à dire hyperconvergence, Hyperconvergence , etc.,
Pour rechercher les fichiers dans un répertoire spécifique, il suffit de l’ajouter à la commande
find ./numeric -type f -exec grep -l -i "hyperconvergence" {} ;
Sortie
./numeric/hci
Rechercher des Fichiers et des Répertoires en Fonction de la Taille
Vous pouvez trouver tous les fichiers ou répertoires qui sont plus petit, égal ou supérieur à une certaine taille, à l’intérieur d’une certaine plage ou vide. Utilisez le format de taille approprié en fonction du type de fichiers ou de répertoires que vous recherchez.,nd fichiers d’une certaine taille – égale à 30 Mo
pour rechercher trouver tous les fichiers de 30 Mo
find / -size 30M
trouver 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 courant
find . -type f -size -10M
rechercher des fichiers de tailles comprises 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
rechercher 20 Ko
find / -type d -size +20k
recherchez les fichiers et répertoires vides.,
les Fichiers
find ./ -type f -size 0
ou
find ./ -type f –empty
Annuaires
find ./ -type d –empty
Rechercher des fichiers par l’âge ou la date de modification
Trouver des fichiers de plus de n jours
find /path/ -type f -name '*.txt' -mtime +8
Le -mtime +8
va chercher les txt
fichiers qui sont âgés de plus de 8 jours.,
par date de modification
recherche des fichiers modifiés au cours des 17 dernières heures
find . -mtime -17 -type f
recherche des répertoires modifiés au cours des 10 derniers jours
find . -mtime -10 -type d
recherche des fichiers basés sur l’accès ou la modification
recherche Cela vous permet de voir les fichiers qui ont ou n’ont pas été consultés dans un délai déterminé.
pour voir les fichiers qui n’ont pas été consultés au cours des 10 derniers jours dans le répertoire personnel.,
find /home -atime +10
les Fichiers consultés exactement il y a 10 jours
find /home -atime 10
Consulté dans les 10 derniers jours
find /home -atime -10
Rechercher les fichiers modifiés dans les n derniers jours
Vous pouvez aussi chercher les fichiers dans le /home
répertoire modifié dans les 10 derniers jours à l’aide de la commande;
find /home -mtime -10
Rechercher les fichiers modifiés dans un délai spécifique.
par exemple, tous les fichiers modifiés il y a entre 6 et 15 jours dans le répertoire home.,
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./.profileroot@ubuntu1804:~#
Répertoires accessibles dans les 10 dernières minutes
find . -amin -10 -type d
Trouver les fichiers qui correspondent à des autorisations spécifiques
Syntaxe
$ find -perm mode
Où est le mode d’autorisation qui est soit numérique, tels que 644, 655, 700, 777
, etc, ou des lettres telles que le u=x, a=r+x,
etc.,
Vous pouvez spécifier le mode de trois manières différentes.
- Sans préfixe lorsque vous souhaitez rechercher des fichiers avec exactement les autorisations spécifiées.
- Avec «
-
» pour les fichiers avec au moins l’autorisation spécifiée. Cela renvoie des fichiers avec les autorisations spécifiées ainsi que des autorisations supérieures supplémentaires. - utiliser «
/
” nécessite de spécifier le propriétaire ou le groupe avec l’Autorisation du fichier.,
Rechercher des fichiers avec la permission 777
find -perm 777
Sortie
./file1
de Trouver des fichiers avec au moins 766
trouvez -perm -766
Sortie
./file2./file1
La commande recherche tous les fichiers dans lesquels l’
- Le propriétaire du fichier a lire/écrire/exécuter autorisations.
- Groupe dispose d’autorisations de lecture/écriture
- d’Autres ont accès en lecture/écriture
en tant Que tel, il retourne deux fichiers qui répondent à ce critère fichier1 et fichier2., Les fichiers n’ont pas besoin d’avoir exactement le 766
autorisations et peut avoir d’autres aussi longtemps, mais doit avoir au moins le spécifié.
Rechercher des fichiers accessibles en écriture par le propriétaire
Nous allons maintenant utiliser le « /
” à la recherche des fichiers accessibles en écriture par leur propriétaire, ou d’un groupe, ou d’autres.
find -perm /222../file2./file3./file1
ce qui précède recherche les fichiers qui sont inscriptibles par leur propriétaire ou leur groupe.
cela renvoie des fichiers qui sont inscriptibles par l’un ou l’autre mais pas nécessairement les deux. Pour voir les fichiers, où les deux ont des autorisations inscriptibles, utilisez le préfixe–.,
./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
Rechercher tous les fichiers texte détenue par Jack
find /home -user jack -iname "*.txt"
Sortie
/home/jack/docs/file32.txt
Rechercher et lister les fichiers et répertoires avec leurs droits d’accès
find -name "*.conf" | ls -l
Sortie
Trouver et agir sur les résultats
Dans cette section, nous allons voir comment vous pouvez agir sur les fichiers qui correspondent au modèle spécifié dans la commande rechercher.,
rechercher des fichiers et modifier les autorisations
rechercher et modifier les autorisations de certains types de fichiers. Dans notre cas, nous allons travailler avec des fichiers PHP avec différentes autorisations comme indiqué ci-dessous.,
Nous allons maintenant rechercher tous les fichiers PHP (ci-dessus) et de remplacer leurs autorisations avec 755
find ver -name "*.php" -type f -exec chmod 755 {} ;
La commande recherche les fichiers PHP dans la balise ver
répertoire et définit ensuite la permission de 755
(rwxr-xr-x
)
Résultats
Rechercher et modifier des autorisations de fichier et répertoire
Rechercher des fichiers avec les permissions 644 et les modifier pour avoir 655 autorisations
find . -type f -perm 644 -exec chmod 655 {} ;
Vous pouvez également rechercher les répertoires avec les permissions 644 et la remplacer par 755.,
find . -type d -perm 644
Sortie
./docs
Le dossier docs a des permissions 644
drwxrwxr-x 2 jack jack 4096 Jan 3 12:45 docs
Pour le mettre 755
, nous run
find . -type d -perm 644 -exec chmod 755 {} ;
Maintenant, nous pouvons vérifier à nouveau pour voir exactement ce que 755
find . -type d -perm 755
Sortie
.
./docs
d’en haut, nous pouvons voir que les répertoires root et docs ont les autorisations 755.,
Ls –la
commande donne les précisions suivantes
drwxr-xr-x 2 jack jack 4096 Jan 3 12:45 docs
Trouver et copier des fichiers ou des répertoires
Trouver et copier un fichier spécifique à un répertoire
La commande ci-dessous permettra de trouver le file22.tx
t fichier et le copier 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 trouver des fichiers tels que des images avec jpg
extension dans le répertoire courant et les copier dans un autre emplacement comme un dossier images, utilisez;
find -iname '*.jpg' -exec cp {} ~/tmp/images ;
echerchez et copiez tous les fichiers JPG dans le dossier
~/tmp/images
.
Trouver et de copier un fichier à de nombreux répertoires
Trouver et copier un seul ou plusieurs répertoires.,
find ~/tmp/dir1/ ~/tmp/dir2/ $HOME/3/ -maxdepth 0 -exec cp ~/numeric/hci {} ;
Cela permettra de trouver le fichier hci fichier et le copier dans les trois répertoires de /tmp/dir1/ /tmp/dir2/
et $HOME/3/
Trouver et déplacer des fichiers vers un autre répertoire
Pour déplacer un fichier d’un répertoire à un autre., Pour déplacer la balise universal.php
fichier;
find ~/folder/ -type f -name universal.php -exec mv {} ~/numeric/ ;
la Recherche et de déplacer des fichiers avec une extension donnée à un autre dossier
find ~/numeric/ -type f -name '*.php' -exec mv {} ~/folder/ ;
Trouver certains fichiers et les déplacer à un autre dossier
find -type f -name uni*.* -exec mv {} ~/unifiles/ ;
La commande recherche tous les fichiers dont le nom commence par uni
et avoir n’importe quelle extension. Il les déplace ensuite dans le répertoire /unifiles/
rechercher et déplacer des fichiers en fonction de l’âge
rechercher et déplacer des fichiers plus anciens que les 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 vers le répertoire backup1.,les fichiers et les répertoires
La syntaxe de recherche et suppression des fichiers ou des répertoires dans le répertoire courant est
find . -type f -name "file to delete" -exec rm -f {} ;
pour supprimer uniquement les fichiers ou
find . -type d -name "dir-to-delete" -exec rm -rf {} ;
pour supprimer seulement les répertoires
Trouver et supprimer les fichiers spécifiques à seulement
Pour trouver et supprimer les fichiers en commençant par til, utilisation;
find . -type f -name "til*" -exec rm {} ;
Pour trouver et supprimer des répertoires de départ avec til
find . -type d -name "til*" -exec rm {} ;
Supprimer les fichiers et les répertoires
find . -name "til*" -exec rm -rf {} ;
Cela permettra de supprimer les fichiers et les répertoires commençant par les lettres til.,
Supprimer par extension
ci-Dessous comment vous pouvez localiser et supprimer tous les txt
fichiers dans le répertoire courant. Remplacer la balise txt
extension 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
Par défaut, la balise -rm
ne sera pas supprimer les répertoires et vous devez utiliser la balise –r
option assure une suppression récursive. Cela garantit la suppression des répertoires vides et ceux contenant des fichiers. L’option-f
force la suppression et est utilisée à la fois pour les fichiers et les répertoires.
rechercher et supprimer des fichiers de plus de n jours
rechercher et supprimer des fichiers de sauvegarde de plus de 20 jours dans le répertoire courant.,
find . -type f -name '*.bak' -mtime +20 -exec rm {} ;
Cela va supprimer tous les .bak
fichiers de plus de 20 jours.
Rechercher et supprimer des répertoires
Pour supprimer un répertoire nommé dir22
find . -type d -name dir22 -exec rm -rf {} ;
assurez-vous de faire correspondre le nom du répertoire cas ou utiliser la balise -iname
option.
find . -type d -iname Dir22 -exec rm -rf {} ;
Enlève les deux Dir22
et dir22
Pour confirmer la suppression, l’utilisation de 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
annuaire Dir22
qui ne sera pas supprimé et y
de la dir22
qui va maintenant être retiré.
Trouver et supprimer les dossiers vides
Vous pouvez utiliser les commandes suivantes pour localiser les fichiers vides et de les supprimer automatiquement.
find ./ -type f -size 0 -exec rm -f {} ;
ou
trouver ./ -type f -taille 0 | xargs rm-f
ou
trouver .,/ -type f -taille 0 –supprimer
Trouver et supprimer les répertoires vides
Pour supprimer les répertoires vides, nous allons utiliser la balise d
option.
find ./ -type d -empty -exec rmdir {} ;
Une autre alternative consiste à utiliser delete au lieu de remove.
find ./ -type d -empty -delete
veuillez noter que la suppression de fichiers système ou 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 préférable d’utiliser un utilisateur non root compte., Aussi, assurez-vous que vous supprimez les bons fichiers qui ne sont pas utiles et que vous avez une sauvegarde de tous vos fichiers de données juste au cas où.
Quelle est la prochaine étape?
allez-y et essayez les commandes de recherche Linux ci-dessus dans votre laboratoire ou votre environnement hors PRODUCTION. Voyez si vous pouvez en utiliser pour automatiser le nettoyage du système de fichiers avec Crontab. Et, pour maîtriser Linux, consultez ce cours en ligne.