Appearance
Fiche de Révision : Recherche de Fichiers sous Linux
1. Concepts Fondamentaux
- Recherche : Linux offre plusieurs outils pour localiser des fichiers selon différents critères (nom, taille, date, permissions, etc.).
- Méthodes de recherche :
- En temps réel :
find- Parcourt le système de fichiers au moment de la recherche. - Indexée :
locate- Utilise une base de données pré-indexée (plus rapide mais moins à jour). - Dans le PATH :
which,whereis- Recherche les exécutables et programmes.
- En temps réel :
2. La Commande find (Recherche Avancée)
- Syntaxe :
find [répertoire] [critères] [actions] - Exemples de base :
find .: Recherche dans le répertoire courant.find /: Recherche dans tout le système.find ~ dossier1/: Recherche dans plusieurs répertoires.
Critères de recherche par nom :
-name "pattern": Recherche exacte (sensible à la casse).-iname "pattern": Recherche insensible à la casse.-path "*/pattern/*": Recherche dans le chemin complet.
Jokers (wildcards) :
*: Zéro ou plusieurs caractères (*.txt).?: Un seul caractère (image?.jpg).[]: Un caractère parmi la liste ([abc]*.log,[0-9]*.tmp).{}: Alternatives multiples ({*.jpg,*.png}).
Critères par type :
-type f: Fichiers réguliers.-type d: Répertoires.-type l: Liens symboliques.
Critères par taille :
-size +100M: Plus de 100 MB.-size -1K: Moins de 1 KB.-size 50c: Exactement 50 octets.- Unités :
c(octets),k(kilo),M(méga),G(giga).
Critères par date :
-mtime -7: Modifiés dans les 7 derniers jours.-mtime +30: Modifiés il y a plus de 30 jours.-atime: Dernier accès,-ctime: Changement d'attributs.-newer fichier: Plus récents que le fichier de référence.
Critères par permissions :
-perm 644: Permissions exactes.-perm -644: Au minimum ces permissions.-perm /644: Au moins une de ces permissions.
Critères par propriétaire :
-user nom: Appartient à l'utilisateur.-group nom: Appartient au groupe.-uid 1000: UID spécifique.
3. Actions avec find
Actions d'affichage :
-print: Affiche le chemin (par défaut).-ls: Affichage détaillé commels -l.-printf "format": Affichage formaté personnalisé.
Actions d'exécution :
-exec commande {} \;: Exécute une commande sur chaque résultat.-exec commande {} +: Exécute une commande sur tous les résultats groupés.-ok commande {} \;: Comme-execmais demande confirmation.
Autres actions :
-delete: Supprime les fichiers trouvés.-maxdepth N: Limite la profondeur de recherche.-mindepth N: Profondeur minimale de recherche.
4. Combinaison de Critères
Opérateurs logiques :
- ET implicite :
find . -name "*.txt" -size +1M - ET explicite :
find . -name "*.txt" -a -size +1M - OU :
find . -name "*.txt" -o -name "*.log" - NON :
find . ! -name "*.tmp" - Groupement :
find . \( -name "*.txt" -o -name "*.log" \) -size +1M
5. Autres Commandes de Recherche
locate (Recherche Rapide) :
locate fichier: Recherche rapide dans la base de données.locate -i fichier: Recherche insensible à la casse.updatedb: Met à jour la base de données (en tant que root).- Avantage : Très rapide.
- Inconvénient : Base de données pas toujours à jour.
which (Localisation d'Exécutables) :
which commande: Trouve l'emplacement d'un exécutable dans le PATH.which -a commande: Affiche tous les emplacements possibles.- Usage : Vérifier quelle version d'un programme sera exécutée.
whereis (Localisation Complète) :
whereis commande: Trouve l'exécutable, les sources et les pages de manuel.whereis -b commande: Seulement l'exécutable.whereis -m commande: Seulement les pages de manuel.whereis -s commande: Seulement les sources.
type (Information sur les Commandes) :
type commande: Détermine le type de commande (builtin, alias, fonction, exécutable).type -a commande: Affiche tous les types possibles.
6. Exemples Pratiques Courants
| Objectif | Commande |
|---|---|
| Tous les fichiers .txt | find . -name "*.txt" |
| Fichiers de plus de 100 MB | find . -size +100M |
| Fichiers modifiés aujourd'hui | find . -mtime -1 |
| Répertoires vides | find . -type d -empty |
| Fichiers avec permissions 777 | find . -perm 777 |
| Fichiers appartenant à user | find . -user user |
| Supprimer fichiers .tmp | find . -name "*.tmp" -delete |
| Copier vers destination | find . -name "*.jpg" -exec cp {} /dest/ \; |
| Chercher du texte dans fichiers | find . -name "*.txt" -exec grep "motif" {} + |
| Fichiers plus récents que file | find . -newer reference.txt |
7. Bonnes Pratiques et Conseils
Performance :
- Limiter la portée :
find /home/userplutôt quefind /. - Utiliser
-maxdepthpour éviter une recherche trop profonde. - Préférer
locatepour des recherches par nom simples.
Sécurité :
- Utiliser
2>/dev/nullpour ignorer les erreurs de permissions. - Tester avec
-printavant d'utiliser-deleteou-exec. - Faire attention aux caractères spéciaux dans les noms de fichiers.
Optimisation :
- Placer les critères les plus sélectifs en premier.
- Utiliser
-prunepour exclure des répertoires de la recherche. - Grouper les critères avec des parenthèses pour clarifier la logique.
8. Résumé des Commandes Clés
| Commande | Usage Principal | Exemple |
|---|---|---|
find | Recherche avancée multicritères | find . -name "*.log" -mtime -7 |
locate | Recherche rapide par nom | locate firefox |
which | Emplacement d'un exécutable | which python3 |
whereis | Localisation complète (binaire, sources, man) | whereis grep |
type | Type et emplacement d'une commande | type ls |
9. Exemples de Recherches Complexes
bash
# Fichiers .txt ou .log modifiés récemment et non vides
find . \( -name "*.txt" -o -name "*.log" \) -mtime -7 ! -empty
# Images de plus de 1MB dans le dossier Pictures
find ~/Pictures -type f \( -name "*.jpg" -o -name "*.png" \) -size +1M
# Fichiers exécutables appartenant à root
find /usr/bin -type f -perm /111 -user root
# Nettoyer les fichiers temporaires de plus de 7 jours
find /tmp -name "*.tmp" -mtime +7 -delete
# Sauvegarder tous les fichiers de configuration
find /etc -name "*.conf" -exec cp {} /backup/configs/ \;