Aller au contenu principal

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