Skip to content

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.

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é comme ls -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 -exec mais 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

ObjectifCommande
Tous les fichiers .txtfind . -name "*.txt"
Fichiers de plus de 100 MBfind . -size +100M
Fichiers modifiés aujourd'huifind . -mtime -1
Répertoires videsfind . -type d -empty
Fichiers avec permissions 777find . -perm 777
Fichiers appartenant à userfind . -user user
Supprimer fichiers .tmpfind . -name "*.tmp" -delete
Copier vers destinationfind . -name "*.jpg" -exec cp {} /dest/ \;
Chercher du texte dans fichiersfind . -name "*.txt" -exec grep "motif" {} +
Fichiers plus récents que filefind . -newer reference.txt

7. Bonnes Pratiques et Conseils

Performance :

  • Limiter la portée : find /home/user plutôt que find /.
  • Utiliser -maxdepth pour éviter une recherche trop profonde.
  • Préférer locate pour des recherches par nom simples.

Sécurité :

  • Utiliser 2>/dev/null pour ignorer les erreurs de permissions.
  • Tester avec -print avant d'utiliser -delete ou -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 -prune pour 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

CommandeUsage PrincipalExemple
findRecherche avancée multicritèresfind . -name "*.log" -mtime -7
locateRecherche rapide par nomlocate firefox
whichEmplacement d'un exécutablewhich python3
whereisLocalisation complète (binaire, sources, man)whereis grep
typeType et emplacement d'une commandetype 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/ \;

.