20 exemples pratiques avec la commande find sous Linux
La commande find sous Linux est une commande très pratique pour chercher des fichiers à partir de la ligne de commande. Il peut être utilisé pour chercher des fichiers en fonction de différents critères de recherche tels que les autorisations, le propriétaire, la date/heure de modification, la taille, etc. Nous allons apprendre à utiliser la commande find avec les différentes options prises en charge.
La commande find est disponible sur la plupart des distributions linux par défaut, vous n’avez donc pas besoin d’installer de package. La commande find est un outil essentiel à apprendre si vous voulez être super productif sur la ligne de commande sous Linux.
1. Trouver des fichiers par son nom dans le répertoire courant
Recherchez tous les fichiers dont le nom « myfile.txt » dans le répertoire courant.
[root@waytolearnx ~]# find . -name myfile.txt
Sortie :
./myfile.txt
2. Lister tous les fichiers d’un répertoire et ses sous répertoires
Cette commande liste tous les fichiers du répertoire courant ainsi que les sous-répertoires.
[root@waytolearnx ~]# find
Sortie :
. ./myfile.txt ./dossier ./dossier/home.html ./image.jpg
Les deux commandes suivantes sont les mêmes:
[root@waytolearnx ~]# find . [root@waytolearnx ~]# find . -print
3. Chercher un répertoire ou un chemin spécifique
La commande suivante cherchera des fichiers dans le répertoire home.
[root@waytolearnx ~]# find ./home
Sortie :
./home ./home/myfile.txt ./home/jeux ./home/jeux/spin.exo ./home/cours/linux.pdf ./home/cours/java.pdf
La commande suivante cherche le fichier par son nom dans le répertoire home.
[root@waytolearnx ~]# find ./home -name "spin.exo"
Sortie :
./home/jeux/spin.exo
Nous pouvons aussi utiliser des caractères génériques(wildcards)
[root@waytolearnx ~]# find ./home -name "*.pdf"
Sortie :
./home/cours/linux.pdf ./home/cours/java.pdf
ignorer la casse
Il est souvent utile d’ignorer la casse lors de la recherche d’un nom de fichiers. Pour ignorer la casse, utilisez simplement l’option « -iname » au lieu de l’option « -name ».
[root@waytolearnx ~]# find ./home -iname "*.PDF"
Sortie :
./home/cours/linux.pdf ./home/cours/java.pdf
4. Trouver des répertoires par son nom
Cherchez tous les répertoires dont le nom est Home dans le répertoire racine /.
[root@waytolearnx ~]# find / -type d -name Home
Sortie :
/Home
5. Trouver des fichiers cachés
Les fichiers cachés sur Linux commencent par un point. Il est donc facile de mentionner cela dans les critères de recherche et de lister tous les fichiers cachés.
[root@waytolearnx ~]# find ~ -type f -name ".*"
Sortie :
.picture.jpg /exec/.config
6. Chercher dans plusieurs dossier en parallèle
[root@waytolearnx ~]# find ./dossier1 ./dossier2 -type f -name "image*"
Sortie :
./dossier1/image1.jpg ./dossier2/image2.png
7. Chercher des fichiers avec les permissions 0666
Trouvez tous les fichiers dont les permissions sont 0666.
[root@waytolearnx ~]# find . -type f -perm 0666 -print
8. Chercher des fichiers qui n’ont pas les permissions 0666
Trouvez tous les fichiers dont ne dispose pas les permissions 0666.
[root@waytolearnx ~]# find / -type f ! -perm 0666
9. Chercher les fichiers en lecture seule
[root@waytolearnx ~]# find / -perm /u=r
10. Trouver les fichiers exécutables
[root@waytolearnx ~]# find / -perm /a=x
11. Trouver des fichiers appartenant à un utilisateur particulier
[root@waytolearnx ~]# find . -user waytolearnx
Nous pourrions également spécifier le nom du fichier avec les critères de l’utilisateur
[root@waytolearnx ~]# find . -user waytolearnx -name '*.pdf'
12. Trouver des fichiers appartenant à un groupe particulier
[root@waytolearnx ~]# find /var/www -group programmeur
13. Trouver les fichiers modifiés depuis 10 jours
[root@waytolearnx ~]# find / -mtime 10
14. Chercher les fichiers consultés au cours des 3 derniers jours
[root@waytolearnx ~]# find / -atime 3
15. Trouvez tous les fichiers modifiés entre 10 et 50 jours auparavant.
[root@waytolearnx ~]# find / -mtime +10 –mtime -50
16. Chercher les fichiers modifiés au cours des 5 dernières minutes
[root@waytolearnx ~]# find /home/tp -cmin -5
17. Chercher les fichiers modifiés depuis une heure
[root@waytolearnx ~]# find / -mmin -60
18. Trouver des fichiers en fonction de sa taille
[root@waytolearnx ~]# find / -size 100M
19. Trouver des fichiers qui ont une taille > 10 Mo et < 40 Mo.
[root@waytolearnx ~]# find / -size +10M -size -40M
20. Trouver des fichiers et des répertoires vides
La commande suivante utilise l’option « -empty », qui cherche tous les fichiers vides.
[root@waytolearnx ~]# find /tmp -type f -empty
Pour lister tous les répertoires vides, utilisez l’option « -type » avec le paramètre « d ».
[root@waytolearnx ~]# find ~/ -type d -empty
Bonjour,
chouette article contribuant au monde merveilleux des lignes de commandes
Voici une ligne de commande que j’ai construite pour un serveur qui reçoit des captures de vidéo de surveillance et qui les efface après un certain nombre de jours ( dans un cron)
find /home/chemin/ -type f -mtime +20 -delete
le -delete me parait intéressant
bien à vous
Eric