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.
[[email protected] ~]# 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.
[[email protected] ~]# find
Sortie :
. ./myfile.txt ./dossier ./dossier/home.html ./image.jpg
Les deux commandes suivantes sont les mêmes:
[[email protected] ~]# find . [[email protected] ~]# find . -print
3. Chercher un répertoire ou un chemin spécifique
La commande suivante cherchera des fichiers dans le répertoire home.
[[email protected] ~]# 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.
[[email protected] ~]# find ./home -name "spin.exo"
Sortie :
./home/jeux/spin.exo
Nous pouvons aussi utiliser des caractères génériques(wildcards)
[[email protected] ~]# 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 ».
[[email protected] ~]# 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 /.
[[email protected] ~]# 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.
[[email protected] ~]# find ~ -type f -name ".*"
Sortie :
.picture.jpg /exec/.config
6. Chercher dans plusieurs dossier en parallèle
[[email protected] ~]# 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.
[[email protected] ~]# 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.
[[email protected] ~]# find / -type f ! -perm 0666
9. Chercher les fichiers en lecture seule
[[email protected] ~]# find / -perm /u=r
10. Trouver les fichiers exécutables
[[email protected] ~]# find / -perm /a=x
11. Trouver des fichiers appartenant à un utilisateur particulier
[[email protected] ~]# find . -user waytolearnx
Nous pourrions également spécifier le nom du fichier avec les critères de l’utilisateur
[roo[email protected] ~]# find . -user waytolearnx -name '*.pdf'
12. Trouver des fichiers appartenant à un groupe particulier
[[email protected] ~]# find /var/www -group programmeur
13. Trouver les fichiers modifiés depuis 10 jours
[[email protected] ~]# find / -mtime 10
14. Chercher les fichiers consultés au cours des 3 derniers jours
[[email protected] ~]# find / -atime 3
15. Trouvez tous les fichiers modifiés entre 10 et 50 jours auparavant.
[[email protected] ~]# find / -mtime +10 –mtime -50
16. Chercher les fichiers modifiés au cours des 5 dernières minutes
[[email protected] ~]# find /home/tp -cmin -5
17. Chercher les fichiers modifiés depuis une heure
[[email protected] ~]# find / -mmin -60
18. Trouver des fichiers en fonction de sa taille
[[email protected] ~]# find / -size 100M
19. Trouver des fichiers qui ont une taille > 10 Mo et < 40 Mo.
[[email protected] ~]# 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.
[[email protected] ~]# find /tmp -type f -empty
Pour lister tous les répertoires vides, utilisez l’option « -type » avec le paramètre « d ».
[[email protected] ~]# 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