GNU/Linux >> Tutoriels Linux >  >> Linux

Maman, j'ai trouvé ! - 15 exemples pratiques de commande de recherche Linux


Photo publiée avec l'aimable autorisation de Qole Pejorian

Outre l'opération de base consistant à rechercher des fichiers dans une structure de répertoires, vous pouvez également effectuer plusieurs opérations pratiques à l'aide de la commande find qui faciliteront votre parcours en ligne de commande.

Dans cet article, passons en revue 15 exemples pratiques de la commande Linux find qui seront très utiles aux débutants comme aux experts.


Tout d'abord, créez les exemples de fichiers vides suivants dans votre répertoire personnel pour essayer certains des exemples de commandes de recherche mentionnés ci-dessous.

# vim create_sample_files.sh
touch MybashProgram.sh
touch mycprogram.c
touch MyCProgram.c
touch Program.c

mkdir backup
cd backup

touch MybashProgram.sh
touch mycprogram.c
touch MyCProgram.c
touch Program.c

# chmod +x create_sample_files.sh

# ./create_sample_files.sh

# ls -R
.:
backup                  MybashProgram.sh  MyCProgram.c
create_sample_files.sh  mycprogram.c      Program.c

./backup:
MybashProgram.sh  mycprogram.c  MyCProgram.c  Program.c

1. Rechercher des fichiers en utilisant le nom

Il s'agit d'une utilisation de base de la commande find. Cet exemple trouve tous les fichiers avec le nom — MyCProgram.c dans le répertoire courant et tous ses sous-répertoires.

# find -name "MyCProgram.c"
./backup/MyCProgram.c
./MyCProgram.c

2. Rechercher des fichiers en utilisant le nom et en ignorant la casse

Il s'agit d'une utilisation de base de la commande find. Cet exemple trouve tous les fichiers avec le nom — MyCProgram.c (en ignorant la casse) dans le répertoire courant et tous ses sous-répertoires.

# find -iname "MyCProgram.c"
./mycprogram.c
./backup/mycprogram.c
./backup/MyCProgram.c
./MyCProgram.c

3. Limiter la recherche à un niveau de répertoire spécifique à l'aide de mindepth et maxdepth

Recherchez le fichier passwd dans tous les sous-répertoires à partir du répertoire racine.

# find / -name passwd
./usr/share/doc/nss_ldap-253/pam.d/passwd
./usr/bin/passwd
./etc/pam.d/passwd
./etc/passwd


Trouvez le fichier passwd sous la racine et un niveau plus bas. (c'est-à-dire racine - niveau 1 et un sous-répertoire - niveau 2)

# find -maxdepth 2 -name passwd
./etc/passwd


Trouvez le fichier passwd sous la racine et deux niveaux plus bas. (c'est-à-dire racine - niveau 1 et deux sous-répertoires - niveaux 2 et 3 )

# find / -maxdepth 3 -name passwd
./usr/bin/passwd
./etc/pam.d/passwd
./etc/passwd


Trouvez le fichier de mots de passe entre les sous-répertoires de niveau 2 et 4.

# find -mindepth 3 -maxdepth 5 -name passwd
./usr/bin/passwd
./etc/pam.d/passwd

4. Exécution de commandes sur les fichiers trouvés par la commande Rechercher.

Dans l'exemple ci-dessous, la commande find calcule la somme md5 de tous les fichiers portant le nom MyCProgram.c (en ignorant la casse). {} est remplacé par le nom de fichier actuel.

# find -iname "MyCProgram.c" -exec md5sum {} \;
d41d8cd98f00b204e9800998ecf8427e  ./mycprogram.c
d41d8cd98f00b204e9800998ecf8427e  ./backup/mycprogram.c
d41d8cd98f00b204e9800998ecf8427e  ./backup/MyCProgram.c
d41d8cd98f00b204e9800998ecf8427e  ./MyCProgram.c

5. Inverser le match.

Affiche les fichiers ou répertoires dont le nom n'est pas MyCProgram.c . Puisque la profondeur maximale est de 1, cela ne regardera que sous le répertoire actuel.

# find -maxdepth 1 -not -iname "MyCProgram.c"
.
./MybashProgram.sh
./create_sample_files.sh
./backup
./Program.c

6. Recherche de fichiers par son numéro d'inode.

Chaque fichier a un numéro d'inode unique, à l'aide duquel nous pouvons identifier ce fichier. Créez deux fichiers avec un nom similaire. c'est-à-dire un fichier avec un espace à la fin.

# touch "test-file-name"

# touch "test-file-name "
[Note: There is a space at the end]

# ls -1 test*
test-file-name
test-file-name


À partir de la sortie ls, vous ne pouvez pas identifier quel fichier a l'espace à la fin. En utilisant l'option -i, vous pouvez voir le numéro d'inode du fichier, qui sera différent pour ces deux fichiers.

# ls -i1 test*
16187429 test-file-name
16187430 test-file-name


Vous pouvez spécifier le numéro d'inode sur une commande de recherche comme indiqué ci-dessous. Dans cet exemple, la commande find renomme un fichier en utilisant le numéro d'inode.

# find -inum 16187430 -exec mv {} new-test-file-name \;

# ls -i1 *test*
16187430 new-test-file-name
16187429 test-file-name


Vous pouvez utiliser cette technique lorsque vous souhaitez effectuer des opérations avec des fichiers mal nommés, comme indiqué dans l'exemple ci-dessous. Par exemple, le fichier nommé — file?.txt contient un caractère spécial. Si vous essayez d'exécuter "rm file?.txt", les trois fichiers suivants seront supprimés. Suivez donc les étapes ci-dessous pour supprimer uniquement le fichier "file?.txt".

# ls
file1.txt  file2.txt  file?.txt


Trouvez les numéros d'inode de chaque fichier.

# ls -i1
804178 file1.txt
804179 file2.txt
804180 file?.txt


Utilisez le numéro d'inode pour supprimer le fichier contenant un caractère spécial, comme indiqué ci-dessous.

# find -inum 804180 -exec rm {} \;

# ls
file1.txt  file2.txt
[Note: The file with name "file?.txt" is now removed]

7. Rechercher un fichier en fonction des autorisations de fichier

Les opérations suivantes sont possibles.

  • Rechercher les fichiers correspondant à l'autorisation exacte
  • Vérifier si l'autorisation donnée correspond, indépendamment des autres bits d'autorisation
  • Rechercher en donnant une représentation octale/symbolique


Pour cet exemple, supposons que le répertoire contient les fichiers suivants. Veuillez noter que les autorisations de fichiers sur ces fichiers sont différentes.

# ls -l
total 0
-rwxrwxrwx 1 root root 0 2009-02-19 20:31 all_for_all
-rw-r--r-- 1 root root 0 2009-02-19 20:30 everybody_read
---------- 1 root root 0 2009-02-19 20:31 no_for_all
-rw------- 1 root root 0 2009-02-19 20:29 ordinary_file
-rw-r----- 1 root root 0 2009-02-19 20:27 others_can_also_read
----r----- 1 root root 0 2009-02-19 20:27 others_can_only_read


Recherchez les fichiers qui ont l'autorisation de lecture pour grouper. Utilisez la commande suivante pour trouver tous les fichiers lisibles par le monde dans votre répertoire personnel, quelles que soient les autres autorisations pour ce fichier.

# find . -perm -g=r -type f -exec ls -l {} \;
-rw-r--r-- 1 root root 0 2009-02-19 20:30 ./everybody_read
-rwxrwxrwx 1 root root 0 2009-02-19 20:31 ./all_for_all
----r----- 1 root root 0 2009-02-19 20:27 ./others_can_only_read
-rw-r----- 1 root root 0 2009-02-19 20:27 ./others_can_also_read


Recherche les fichiers qui ne sont autorisés qu'en lecture pour grouper.

# find . -perm g=r -type f -exec ls -l {} \;
----r----- 1 root root 0 2009-02-19 20:27 ./others_can_only_read


Rechercher les fichiers autorisés en lecture seule pour grouper [recherche par octal]

# find . -perm 040 -type f -exec ls -l {} \;
----r----- 1 root root 0 2009-02-19 20:27 ./others_can_only_read

8. Trouvez tous les fichiers vides (fichier de zéro octet) dans votre répertoire personnel et son sous-répertoire

La plupart des fichiers de la sortie de commande suivante seront des fichiers de verrouillage et des espaces réservés créés par d'autres applications.

# find ~ -empty


Répertorier tous les fichiers vides uniquement dans votre répertoire personnel.

# find . -maxdepth 1 -empty


Liste uniquement les fichiers vides non masqués uniquement dans le répertoire courant.

# find . -maxdepth 1 -empty -not -name ".*"

9. Trouver les 5 fichiers les plus volumineux

La commande suivante affichera les 5 fichiers les plus volumineux du répertoire actuel et de son sous-répertoire. Cela peut prendre un certain temps à s'exécuter en fonction du nombre total de fichiers que la commande doit traiter.

# find . -type f -exec ls -s {} \; | sort -n -r | head -5

10. Trouver les 5 meilleurs petits fichiers

La technique est la même que pour trouver les fichiers les plus volumineux, mais la seule différence dans le tri est l'ordre croissant.

# find . -type f -exec ls -s {} \; | sort -n  | head -5


Dans la commande ci-dessus, vous ne verrez probablement que les fichiers à ZÉRO octet (fichiers vides). Ainsi, vous pouvez utiliser la commande suivante pour répertorier les fichiers plus petits autres que les fichiers à zéro octet.

# find . -not -empty -type f -exec ls -s {} \; | sort -n  | head -5

11. Rechercher des fichiers en fonction du type de fichier à l'aide de l'option -type

Trouvez uniquement les fichiers de socket.

# find . -type s


Rechercher tous les répertoires

# find . -type d


Trouver uniquement les fichiers normaux

# find . -type f


Trouvez tous les fichiers cachés

# find . -type f -name ".*"


Trouvez tous les répertoires cachés

# find -type d -name ".*"

12. Trouvez des fichiers en comparant avec l'heure de modification d'un autre fichier.

Affiche les fichiers qui sont modifiés après le fichier spécifié. La commande de recherche suivante affiche tous les fichiers créés/modifiés après le fichier ordinaire.

# ls -lrt
total 0
-rw-r----- 1 root root 0 2009-02-19 20:27 others_can_also_read
----r----- 1 root root 0 2009-02-19 20:27 others_can_only_read
-rw------- 1 root root 0 2009-02-19 20:29 ordinary_file
-rw-r--r-- 1 root root 0 2009-02-19 20:30 everybody_read
-rwxrwxrwx 1 root root 0 2009-02-19 20:31 all_for_all
---------- 1 root root 0 2009-02-19 20:31 no_for_all

# find -newer ordinary_file
.
./everybody_read
./all_for_all
./no_for_all

13. Rechercher des fichiers par taille

En utilisant l'option -size, vous pouvez rechercher des fichiers par taille.

Rechercher les fichiers plus gros que la taille indiquée

# find ~ -size +100M


Rechercher des fichiers plus petits que la taille indiquée

# find ~ -size -100M


Recherche des fichiers qui correspondent exactement à la taille donnée

# find ~ -size 100M


Remarque :- signifie moins que la taille donnée, + signifie plus que la taille donnée et aucun symbole ne signifie la taille donnée exacte.

14. Créer un alias pour les opérations de recherche fréquentes

Si vous trouvez quelque chose d'aussi utile, vous pouvez en faire un alias. Et exécutez-le quand vous le souhaitez.


Supprimez fréquemment les fichiers nommés a.out.

# alias rmao="find . -iname a.out -exec rm {} \;"
# rmao


Supprimez les fichiers core générés par le programme c.

# alias rmc="find . -iname core -exec rm {} \;"
# rmc

15. Supprimez les fichiers d'archive volumineux à l'aide de la commande find

La commande suivante supprime les fichiers *.zip de plus de 100 Mo.

# find / -type f -name *.zip -size +100M -exec rm -i {} \;"

Supprimez tous les fichiers *.tar de plus de 100 Mo à l'aide de l'alias rm100m (Supprimer 100 Mo). Utilisez les concepts similaires et créez des alias tels que rm1g, rm2g, rm5g pour supprimer les fichiers de taille supérieure à 1G, 2G et 5G respectivement.

# alias rm100m="find / -type f -name *.tar -size +100M -exec rm -i {} \;"
# alias rm1g="find / -type f -name *.tar -size +1G -exec rm -i {} \;"
# alias rm2g="find / -type f -name *.tar -size +2G -exec rm -i {} \;"
# alias rm5g="find / -type f -name *.tar -size +5G -exec rm -i {} \;"

# rm100m
# rm1g
# rm2g
# rm5g

Trouver des exemples de commandes, deuxième partie

Si vous avez aimé cet article de maman sur la commande de recherche, n'oubliez pas de consulter l'article de papa sur la commande de recherche - Papa, je l'ai trouvé !, 15 exemples de commandes de recherche Linux impressionnants (Part2)

Des articles Linux géniaux

Voici quelques exemples impressionnants de 15 articles qui pourraient vous être utiles.

  • 15 exemples pour maîtriser l'historique de la ligne de commande Linux
  • Commande LS Unix :15 exemples pratiques
  • Maîtrisez le Grep ! – 15 exemples pratiques de commandes Grep
  • Linux Crontab :15 exemples de tâches Cron impressionnants

Linux
  1. 25 exemples pratiques de commande de recherche utiles sous Linux

  2. Commande cp sous Linux :7 exemples pratiques

  3. Commande d'arrêt de Linux :5 exemples pratiques

  4. 5 exemples pratiques de la commande dd sous Linux

  5. 10 exemples pratiques de commandes Linux nm

Les 50 exemples pratiques de la commande SED sous Linux

15 exemples pratiques de commande Rsync sous Linux

5 exemples pratiques de la commande Tail sous Linux

commande echo sous Linux :7 exemples pratiques

Commande Ping pratique dans des exemples Linux

Papa, je l'ai trouvé !, 15 exemples de commandes de recherche Linux impressionnants (Part2)