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
: octetsk
: kilo-octetsM
: mégaoctetsG
: gigaoctetsb
: 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.