Introduction
Dans ce labo (atelier), vous apprendrez à rechercher efficacement des fichiers dans un système Linux en utilisant la puissante commande find. La commande find est un outil polyvalent qui vous permet de rechercher des fichiers et des répertoires en fonction de divers critères tels que le nom, la taille, la date de modification, etc.
À la fin de ce labo, vous serez en mesure de :
- Utiliser la syntaxe de base de la commande
find - Rechercher des fichiers par noms spécifiques
- Trouver des fichiers en fonction de leur taille
- Combiner plusieurs critères de recherche
Ces compétences sont essentielles pour les administrateurs de systèmes, les développeurs et toute personne travaillant avec des systèmes Linux qui a besoin de localiser efficacement des fichiers dans le système de fichiers.
Exploration des bases de la commande find
La commande find est un outil puissant sous Linux qui vous aide à rechercher des fichiers et des répertoires dans un emplacement spécifié. La syntaxe de base de la commande find est la suivante :
find [point de départ] [options] [expression]
Où :
[point de départ]est le répertoire à partir duquelfinddoit commencer la recherche[options]contrôlent la manière dont la recherche est effectuée[expression]définit les critères de sélection des fichiers
Créons une structure de répertoires pour pratiquer. Ouvrez votre terminal et exécutez les commandes suivantes :
mkdir -p ~/project/files/{documents,images,music}
touch ~/project/files/documents/{report.txt,notes.txt,project.pdf}
touch ~/project/files/images/{photo1.jpg,photo2.jpg,diagram.png}
touch ~/project/files/music/{song1.mp3,song2.mp3}
Ces commandes créent une structure de répertoires avec plusieurs sous-répertoires et des fichiers de différents types.
Maintenant, utilisons la commande find pour lister tous les fichiers dans le répertoire files :
find ~/project/files -type f
Vous devriez voir une sortie similaire à :
/home/labex/project/files/documents/report.txt
/home/labex/project/files/documents/notes.txt
/home/labex/project/files/documents/project.pdf
/home/labex/project/files/images/photo1.jpg
/home/labex/project/files/images/photo2.jpg
/home/labex/project/files/images/diagram.png
/home/labex/project/files/music/song1.mp3
/home/labex/project/files/music/song2.mp3
Dans cette commande :
~/project/filesspécifie l'emplacement de départ de la recherche-type findique àfindde ne rechercher que des fichiers (pas des répertoires)
Vous pouvez également utiliser find pour lister uniquement les répertoires :
find ~/project/files -type d
Cela affichera :
/home/labex/project/files
/home/labex/project/files/documents
/home/labex/project/files/images
/home/labex/project/files/music
L'option -type d indique à find de ne rechercher que des répertoires.
Recherche de fichiers par nom
L'une des utilisations les plus courantes de la commande find est de rechercher des fichiers par leur nom. L'option -name vous permet de spécifier un modèle à comparer avec les noms de fichiers.
Supposons que vous souhaitiez trouver tous les fichiers texte dans le répertoire files. Vous pouvez utiliser :
find ~/project/files -type f -name "*.txt"
Cette commande devrait retourner :
/home/labex/project/files/documents/report.txt
/home/labex/project/files/documents/notes.txt
Dans cette commande :
-name "*.txt"indique àfindde rechercher les noms de fichiers se terminant par.txt- Le caractère
*est un joker qui correspond à n'importe quel nombre de caractères
L'option -name respecte la casse. Si vous souhaitez rechercher des fichiers sans tenir compte de la casse, utilisez -iname à la place :
find ~/project/files -type f -iname "*.TXT"
Cela trouvera toujours report.txt et notes.txt même si nous avons spécifié l'extension en majuscules.
Maintenant, essayons de trouver un fichier spécifique. Créons un nouveau fichier avec un nom unique :
touch ~/project/files/documents/important_report.txt
Pour trouver ce fichier spécifique :
find ~/project/files -type f -name "important_report.txt"
Sortie :
/home/labex/project/files/documents/important_report.txt
Vous pouvez également effectuer une recherche dans des sous-répertoires spécifiques. Par exemple, pour rechercher uniquement dans le répertoire images :
find ~/project/files/images -type f -name "*.jpg"
Sortie :
/home/labex/project/files/images/photo1.jpg
/home/labex/project/files/images/photo2.jpg
Cette commande effectue une recherche uniquement dans le répertoire images pour les fichiers ayant l'extension .jpg.
Recherche de fichiers par taille
La commande find peut également rechercher des fichiers en fonction de leur taille en utilisant l'option -size. Cela est utile lorsque vous avez besoin de trouver des fichiers volumineux qui peuvent occuper de l'espace disque ou des fichiers de petite taille qui peuvent être vides.
Tout d'abord, comprenons la syntaxe de l'option -size :
-size n[cwbkMG]
Où :
nest un nombre- Les lettres représentent les unités : c (octets), w (mots de 2 octets), b (blocs de 512 octets), k (kilooctets), M (mégaoctets), G (gigaoctets)
- Préfixer
navec+signifie "supérieur à n", et-signifie "inférieur à n"
Ajoutons du contenu à nos fichiers pour leur donner des tailles différentes :
echo "This is a short text file." > ~/project/files/documents/notes.txt
for i in {1..100}; do
echo "This is line $i of the important report." >> ~/project/files/documents/important_report.txt
done
Maintenant, trouvons les fichiers de moins de 100 octets :
find ~/project/files -type f -size -100c
Cela peut inclure certains de nos fichiers vides ou presque vides.
Pour trouver les fichiers de plus d'1 kilooctet :
find ~/project/files -type f -size +1k
Cela devrait inclure notre fichier important_report.txt car nous y avons ajouté 100 lignes.
Vous pouvez également spécifier une taille exacte. Créons un fichier de exactement 50 octets :
echo -n "This is exactly 50 bytes long........................." > ~/project/files/documents/exact_size.txt
Maintenant, trouvons les fichiers de exactement 50 octets :
find ~/project/files -type f -size 50c
Sortie :
/home/labex/project/files/documents/exact_size.txt
Pour vérifier la taille du fichier, vous pouvez utiliser la commande ls -l :
ls -l ~/project/files/documents/exact_size.txt
La deuxième colonne de la sortie affiche la taille du fichier en octets, qui devrait être 50.
Combinaison de plusieurs critères de recherche
La commande find devient encore plus puissante lorsque vous combinez plusieurs critères de recherche. Vous pouvez utiliser des opérateurs logiques pour créer des modèles de recherche complexes.
Utilisation de la logique ET
Par défaut, lorsque vous spécifiez plusieurs critères, find utilise la logique ET, ce qui signifie que toutes les conditions doivent être vraies. Par exemple, pour trouver tous les fichiers texte de plus de 100 octets :
find ~/project/files -type f -name "*.txt" -size +100c
Cette commande trouve les fichiers qui sont à la fois des fichiers texte ET de plus de 100 octets.
Utilisation de la logique OU avec -o
Pour utiliser la logique OU, vous pouvez utiliser l'option -o. Par exemple, pour trouver les fichiers qui sont soit des fichiers texte, soit des fichiers PDF :
find ~/project/files -type f \( -name "*.txt" -o -name "*.pdf" \)
Notez l'utilisation des parenthèses, qui doivent être échappées avec des antislashs. Cette commande trouve les fichiers qui correspondent à l'une ou l'autre des conditions.
La sortie devrait inclure :
/home/labex/project/files/documents/report.txt
/home/labex/project/files/documents/notes.txt
/home/labex/project/files/documents/important_report.txt
/home/labex/project/files/documents/exact_size.txt
/home/labex/project/files/documents/project.pdf
Utilisation de la logique NON avec
Pour nier une condition, utilisez l'opérateur !. Par exemple, pour trouver tous les fichiers qui ne sont pas des fichiers texte :
find ~/project/files -type f ! -name "*.txt"
Cette commande trouve tous les fichiers qui n'ont PAS l'extension .txt.
Exemples complexes
Essayons quelques combinaisons plus complexes. Par exemple, pour trouver tous les fichiers qui sont :
- Soit des images JPG, soit des images PNG ET
- De plus de 0 octet
find ~/project/files -type f \( -name "*.jpg" -o -name "*.png" \) -size +0c
Pour trouver tous les fichiers dans le répertoire documents qui ne sont pas des fichiers PDF :
find ~/project/files/documents -type f ! -name "*.pdf"
Créons quelques fichiers supplémentaires pour démontrer une recherche plus complexe :
## Create some large and small image files
echo "This is a large JPG file" > ~/project/files/images/large_image.jpg
for i in {1..50}; do
echo "Adding content to make this file larger." >> ~/project/files/images/large_image.jpg
done
touch ~/project/files/images/empty_image.png
Maintenant, trouvons toutes les images (JPG ou PNG) qui sont soit vides, soit de plus de 1 Ko :
find ~/project/files/images -type f \( -name "*.jpg" -o -name "*.png" \) \( -size 0 -o -size +1k \)
Cette commande complexe montre comment vous pouvez créer des critères de recherche sophistiqués en combinant plusieurs conditions avec des opérateurs logiques.
Résumé
Dans ce laboratoire (lab), vous avez appris à utiliser la commande Linux find pour rechercher efficacement des fichiers en fonction de divers critères. Voici un récapitulatif de ce que vous avez accompli :
- Vous avez appris la syntaxe de base de la commande
findet comment rechercher des fichiers et des répertoires. - Vous avez découvert comment trouver des fichiers par nom en utilisant l'option
-nameet les caractères génériques (wildcards). - Vous avez exploré comment rechercher des fichiers en fonction de leur taille en utilisant l'option
-sizeavec différentes unités. - Vous avez combiné plusieurs critères de recherche en utilisant des opérateurs logiques (ET, OU, NON) pour effectuer des recherches complexes.
La commande find est l'un des outils les plus puissants et les plus flexibles disponibles sous Linux pour localiser des fichiers. Au fur et à mesure que vous continuerez à travailler avec des systèmes Linux, vous trouverez ces compétences inestimables pour gérer les fichiers, résoudre les problèmes et automatiser les tâches.
Points clés à retenir :
- Utilisez
-type fpour les fichiers et-type dpour les répertoires. - Utilisez
-namepour des recherches de noms de fichiers sensibles à la casse et-inamepour des recherches insensibles à la casse. - Utilisez
-sizeavec les unités appropriées (c, k, M, G) pour trouver des fichiers par taille. - Combinez les critères avec des opérateurs logiques pour créer des modèles de recherche complexes.
Ces compétences vous aideront à naviguer et à gérer efficacement les fichiers dans n'importe quel environnement Linux.



