Comment rechercher des fichiers sous Linux à l’aide des commandes find et locate

Rechercher des fichiers sous Linux à l'aide des commandes find et locate

Lorsque l’on travaille sous Linux, l’un des défis les plus fréquents est de trouver des fichiers spécifiques. Dans ce guide, nous verrons comment utiliser la commande find pour rechercher des fichiers en fonction de différents filtres et paramètres. Nous aborderons également brièvement la commande locate, qui offre un autre moyen de rechercher des fichiers.

Prérequis

Pour pouvoir suivre ce tutoriel, vous devez disposer d’un ordinateur équipé d’un système d’exploitation basé sur Linux. Il peut s’agir d’une machine locale ou d’un serveur privé virtuel accessible par SSH. Bien que les démonstrations de ce guide aient été vérifiées sur Ubuntu 20.04, elles devraient fonctionner sur n’importe quelle distribution Linux.

Recherche par nom de fichier

La méthode la plus couramment utilisée pour rechercher des fichiers est leur nom. Pour localiser un fichier par son nom à l’aide de la commande find, vous pouvez utiliser la syntaxe suivante :

$ find / -name "query"

Par défaut, cette recherche est sensible à la casse. Si vous souhaitez effectuer une recherche insensible à la casse, vous pouvez utiliser l’option -iname :

$ find / -iname "query"

Si vous souhaitez trouver tous les fichiers qui ne correspondent pas à un modèle particulier, vous pouvez utiliser l’option -not :

$ find / -not -name "query_to_avoid"

Vous pouvez également utiliser le point d’exclamation ( !) pour inverser la recherche :

$ find / \! -name "query_to_avoid"

Lorsque vous utilisez le point d’exclamation, n’oubliez pas de l’échapper avec une barre oblique inverse (\) pour éviter que l’interpréteur de commandes ne l’interprète.

Recherche par type de fichier

Une autre façon de rechercher des fichiers est de se baser sur leur type en utilisant le paramètre -type. Voici quelques descripteurs de type que vous pouvez utiliser :

  • f: fichier régulier.
  • d: répertoire.
  • l: lien symbolique.
  • c: dispositifs de caractères.
  • b: dispositifs de blocage.

Par exemple, si vous souhaitez trouver tous les périphériques de caractères sur votre système, exécutez la commande suivante :

$ find /dev -type c

Pour rechercher des fichiers avec une extension spécifique (par exemple, .conf), utilisez l’option -name avec le motif *.extension :

$ find /usr -type f -name "*.conf"

Vous pouvez combiner plusieurs expressions de recherche à l’aide de la fonction -and (implicite si aucune option n’est spécifiée) ou l’opérateur -or:

$ find -name query_1 -or -name query_2

Filtrage par taille et par temps

La commande find propose plusieurs options pour filtrer les fichiers en fonction de leur taille et de leur durée.

Taille

Pour filtrer les fichiers par taille, utilisez le paramètre -size suivi d’une valeur de taille et d’un suffixe indiquant l’unité. Les suffixes de taille les plus courants sont les suivants :

  • c: octets
  • k: kilo-octets
  • M: mégaoctets
  • G: gigaoctets
  • b: Blocs de 512 octets

Par exemple, pour localiser les fichiers dont la taille est exactement de 50 octets :

$ find /usr -size 50c

Pour trouver des fichiers dont la taille est inférieure à 50 octets :

$ find /usr -size -50c

L’heure

Pour filtrer les fichiers en fonction de leur heure de modification, vous pouvez utiliser les paramètres -mtime, -atime et -ctime.

  • -mtime recherche sur la base de l’heure de modification du fichier.
  • -atime sur la base du temps d’accès au fichier.
  • -ctime effectue des recherches sur la base de l’heure de modification du fichier.

Vous pouvez spécifier l’heure en utilisant différents formats :

  • n: le nombre exact de périodes de 24 heures écoulées.
  • +n: il y a plus de n périodes de 24 heures.
  • -n: il y a moins de n périodes de 24 heures.

Par exemple, pour trouver les fichiers modifiés au cours des 7 derniers jours :

$ find /usr -mtime -7

Pour localiser les fichiers consultés il y a plus de 30 jours :

$ find /usr -atime +30

Pour découvrir les fichiers dont les métadonnées (telles que les autorisations) ont été modifiées au cours des dernières 24 heures :

$ find /usr -ctime 0

Recherche par propriétaire et autorisations

La commande find vous permet également de rechercher des fichiers en fonction de leur propriétaire et de leurs autorisations.

Owner

Pour rechercher les fichiers appartenant à un utilisateur spécifique, vous pouvez utiliser le paramètre -user suivi du nom d’utilisateur. Par exemple, pour rechercher les fichiers appartenant à l’utilisateur “john” :

$ find / -user john

Permissions

Vous pouvez rechercher des fichiers en fonction de leurs autorisations à l’aide du paramètre -perm. Ce paramètre accepte un mode numérique ou une notation symbolique représentant les autorisations souhaitées.

Pour rechercher des fichiers avec des autorisations spécifiques exprimées en mode numérique, utilisez un nombre octal à trois chiffres. Par exemple, pour rechercher des fichiers avec des autorisations de lecture, d’écriture et d’exécution pour le propriétaire, et des autorisations de lecture pour les autres :

$ find / -perm 744

Pour rechercher des fichiers avec des autorisations spécifiques exprimées en notation symbolique, utilisez une combinaison de u (utilisateur), g (groupe), o (autres), r (lecture), w (écriture) et x (exécution). Par exemple, pour rechercher des fichiers avec des autorisations de lecture et d’écriture pour le propriétaire :

$ find / -perm u=rw

You can also combine multiple permissions and specify different ownership levels in symbolic notation. For example, to search for files with read and execute permissions for the owner, write permission for the group, and read permission for others:

$ find / -perm u=rx,g=w,o=r

En utilisant les options -user et -perm, vous pouvez rechercher efficacement des fichiers en fonction de leur propriétaire et de leurs autorisations.

Exécution de commandes sur les résultats de Find

La commande find permet non seulement de localiser des fichiers, mais aussi d’effectuer des actions sur les résultats de la recherche. Vous pouvez exécuter diverses commandes sur les fichiers trouvés par find à l’aide de l’option -exec.

La syntaxe de base pour l’exécution de commandes sur les résultats de la recherche est la suivante :

$ find /path/to/search -name "query" -exec command {} \;

Dans cette syntaxe :

  • /path/to/search est le répertoire dans lequel vous souhaitez rechercher des fichiers.
  • "query" est la requête de recherche ou le modèle de correspondance des noms de fichiers.
  • command est la commande que vous souhaitez exécuter sur chaque fichier trouvé.
  • {} représente l’espace réservé pour le fichier trouvé.
  • \ ; est utilisé pour mettre fin à l’option -exec.

Par exemple, pour supprimer tous les fichiers avec l’option .log dans le cadre de l’élargissement de l’Union européenne. /var/log vous pouvez utiliser la commande suivante :

$ find /var/log -name "*.log" -exec rm {} \;

Cette commande exécute le programme rm sur chaque fichier trouvé par find, en supprimant tous les fichiers portant l’extension .log.

Vous pouvez également combiner plusieurs commandes ou passer des arguments supplémentaires à la commande. Veillez simplement à échapper correctement les caractères spéciaux.

L’utilisation de l’option -exec avec la commande find permet d’effectuer des actions sur les résultats de la recherche, ce qui en fait un outil puissant pour la gestion et l’automatisation des fichiers.

Utilisation de la commande locate

La commande locate permet de rechercher plus rapidement des fichiers sur votre système en utilisant une base de données préconstruite appelée base de données locate. La base de données est mise à jour régulièrement, il se peut donc qu’elle ne contienne pas les fichiers récemment créés ou modifiés.

Initialisation de la base de données :

Avant d’utiliser la commande locate, il est essentiel de s’assurer que la base de données est à jour. Exécutez la commande suivante en tant que root ou avec sudo :

$ sudo updatedb

Cette commande met à jour la base de données utilisée par locate pour indexer le système de fichiers.

Recherche de fichiers :

Pour rechercher des fichiers à l’aide de locate, il suffit de spécifier le mot-clé ou le modèle à rechercher. Par exemple :

$ locate file.txt

Cette commande permet de trouver tous les fichiers dont le nom contient “file.txt”.

Sensibilité à la casse :

Par défaut, la commande locate ne tient pas compte de la casse. Si vous souhaitez effectuer une recherche sensible à la casse, utilisez l’option -i. Par exemple, l’option -i permet d’effectuer une recherche sensible à la casse :

$ locate -i File.txt

Cette commande permet de trouver les fichiers dont le nom contient “File.txt” ou “file.txt”.

Mise à jour de la base de données :

La base de données de fichiers utilisée par locate n’est pas toujours à jour. Pour être sûr de disposer des informations les plus récentes sur les fichiers, mettez périodiquement à jour la base de données à l’aide de la commande updatedb.

Conclusion

La recherche de fichiers sous Linux peut être effectuée à l’aide des commandes find et locate. La commande find offre plus de flexibilité et permet des recherches fines basées sur différents critères, tels que le nom, le type, la taille et l’heure du fichier. En revanche, la commande locate permet une recherche plus rapide à l’aide d’une base de données préconstruite.

En maîtrisant ces commandes, vous pouvez localiser efficacement les fichiers sur votre système Linux et rationaliser votre flux de travail.

Laisser un commentaire