Chapitre 3.6 - Recherche de Fichiers
Objectifs d'Apprentissage
À la fin de ce chapitre, vous serez capable de:
- Utiliser find efficacement
- Utiliser locate pour recherche rapide
- Rechercher par contenu avec grep
- Combiner les outils de recherche
find - Recherche Puissante
Syntaxe de Base
find [chemin] [critères] [actions]
Recherche par Nom
# Par nom exact
find /home -name "fichier.txt"
# Insensible à la casse
find /home -iname "fichier.txt"
# Patterns
find /home -name "*.txt"
find /home -name "file*"
find /home -name "*log*"
Recherche par Type
# Fichiers seulement
find /home -type f
# Répertoires seulement
find /home -type d
# Liens symboliques
find /home -type l
# Types spéciaux
find /dev -type b # Block devices
find /dev -type c # Character devices
Recherche par Taille
# Plus de 100MB
find /home -size +100M
# Moins de 1KB
find /home -size -1k
# Exactement 50MB
find /home -size 50M
# Unités: c (bytes), k, M, G
Recherche par Date
# Modifié dernière semaine
find /home -mtime -7
# Modifié il y a plus de 30 jours
find /home -mtime +30
# Modifié dernière heure
find /home -mmin -60
# Par date d'accès
find /home -atime -7
# Par date de création
find /home -ctime -7
Recherche par Permissions
# Fichiers exécutables
find /home -type f -perm /111
# Fichiers avec permissions spécifiques
find /home -perm 644
# Fichiers sans permissions pour autres
find /home ! -perm -o=r
Recherche par Propriétaire
# Par utilisateur
find /home -user user1
# Par groupe
find /home -group developers
# Par UID/GID
find /home -uid 1000
find /home -gid 1000
Actions avec find
# Afficher (par défaut)
find /home -name "*.txt"
# Exécuter une commande
find /home -name "*.txt" -exec ls -lh {} \;
find /home -name "*.txt" -exec rm {} \;
# Supprimer directement
find /home -name "*.tmp" -delete
# Copier
find /home -name "*.txt" -exec cp {} /backup/ \;
# Avec confirmation
find /home -name "*.txt" -ok rm {} \;
Combinaisons
# Fichiers .log modifiés dernière semaine, plus de 10MB
find /var/log -name "*.log" -mtime -7 -size +10M
# Fichiers .txt appartenant à user1, exécutables
find /home -name "*.txt" -user user1 -perm /111
# Répertoires vides
find /home -type d -empty
locate - Recherche Rapide
Utilisation
# Recherche simple
locate fichier.txt
# Insensible à la casse
locate -i fichier
# Limiter le nombre de résultats
locate -l 20 fichier
# Patterns
locate "*.txt"
locate "file*"
Mise à Jour de la Base
# Mettre à jour la base de données
sudo updatedb
# Voir les bases utilisées
locate -S
Avantages:
- Très rapide
- Index pré-construit
Inconvénients:
- Nécessite updatedb régulier
- Peut ne pas trouver les fichiers récents
grep - Recherche dans le Contenu
Recherche de Texte
# Recherche simple
grep "motif" fichier.txt
# Insensible à la casse
grep -i "motif" fichier.txt
# Afficher numéros de ligne
grep -n "motif" fichier.txt
# Afficher seulement les noms de fichiers
grep -l "motif" *.txt
# Recherche récursive
grep -r "motif" /home/user1/
# Recherche inverse (lignes sans motif)
grep -v "motif" fichier.txt
Patterns Avancés
# Expressions régulières
grep "^début" fichier.txt # Commence par
grep "fin$" fichier.txt # Se termine par
grep "motif1\|motif2" fichier.txt # OU
grep "[0-9]" fichier.txt # Chiffres
grep "[a-z]" fichier.txt # Lettres minuscules
# Recherche étendue
grep -E "motif1|motif2" fichier.txt
Options Utiles
# Contexte (lignes avant/après)
grep -C 3 "motif" fichier.txt # 3 lignes avant/après
grep -B 2 "motif" fichier.txt # 2 lignes avant
grep -A 2 "motif" fichier.txt # 2 lignes après
# Compter les occurrences
grep -c "motif" fichier.txt
# Couleurs
grep --color=auto "motif" fichier.txt
Combinaison d'Outils
find + grep
# Chercher dans tous les fichiers .txt
find /home -name "*.txt" -exec grep -l "motif" {} \;
# Chercher et afficher avec contexte
find /home -name "*.log" -exec grep -Hn "ERROR" {} \;
find + xargs
# Plus efficace que -exec
find /home -name "*.txt" | xargs grep "motif"
find /home -name "*.txt" -print0 | xargs -0 grep "motif"
Pipeline Complexe
# Trouver fichiers .log, chercher ERROR, compter
find /var/log -name "*.log" -exec grep "ERROR" {} \; | wc -l
# Trouver fichiers modifiés récemment, chercher motif
find /home -mtime -1 -type f -exec grep -l "motif" {} \;
which et whereis
which
Trouve l'emplacement d'une commande:
which ls
which python
which git
whereis
Trouve binaire, source et man:
whereis ls
whereis python
# Affiche: binaire, source, man pages
Résumé
Dans ce chapitre, vous avez appris:
find: Recherche puissante par nom, type, taille, date, permissions
locate: Recherche rapide avec index
grep: Recherche dans le contenu des fichiers
which/whereis: Trouver les commandes
Combinaisons: find + grep, find + xargs pour efficacité
Prochaines Étapes
Chapitre 3.7: Liens Symboliques et Durs
Chapitre 3.8: Types de Systèmes de Fichiers
Chapitre créé le: Décembre 2024