locate est une commande de bases Linux pour faire des recherches de fichiers sur Linux.
L'utilitaire locate est extrêmement rapide car il recherche dans une base de données.
Ainsi, cela évite une recherche sur chaque disques locaux ce qui peut prendre du temps.
Ainsi locate répond à la plupart des demandes pour localiser des fichiers par le nom.
Il peut se substituer à la commande find dans la plupart des cas, bien que cette dernière est beaucoup plus puissante.
Dans ce tutoriel, je vous explique comment utiliser la commande locate à travers de nombreux exemples.
Comment utiliser la commande locate
Le principe de locate est très simple à comprendre.
Lorsque vous utilisez locate, ce dernier interroge une base de données /var/lib/mlocate/mlocate.db qui stocke les noms et emplacements des fichiers.
Cela va beaucoup plus vite que devoir recherche sur les disques locaux.
Cette base de données se met à jour tous les jours, à travers un cron pour ajouter les modifications apportées au système de fichiers.
Voici la syntaxe de la commande locate :
locate [Fichier]
OPTIONS | DESCRIPTION |
-e | Afficher que les fichiers existants dans le système |
-c | Count : compter le nombre d'entrées) |
--regex ou -r | Faire une recherche en utilisant les regex |
-i | Ignorer la casse (rendre locate insensible à la casse) |
-l <Num> | Réduire le nombre d'entrée du résultat à Num |
Par exemple, pour rechercher tous les fichiers malekal.txt sur votre Linux :
locate malekal
Configurer et mettre à jour la base de données locate
Si vous avez besoin de mettre à jour la base de données manuellement pour refléter les dernières modifications de fichiers, utilisez la commande updatedb de cette manière :
sudo updatedb
Certaines distributions incluent un fichier /etc/updatedb.conf avec la configuration updatedb.
Sur Debian, la configuration se trouve directement dans le fichier cron : /etc/cron.daily/locate
Notamment on trouve :
# Global options for invocations of find(1)
FINDOPTIONS='-ignore_readdir_race'
# filesystems which are pruned from updatedb database
PRUNEFS="NFS nfs nfs4 afs binfmt_misc proc smbfs autofs iso9660 ncpfs coda devpts ftpfs devfs mfs shfs sysfs cifs lustre_lite tmpfs usbfs udf ocfs2"
# paths which are pruned from updatedb database
PRUNEPATHS="/tmp /usr/tmp /var/tmp /afs /amd /alex /var/spool /sfs /media /var/lib/schroot/mount"
# netpaths which are added
NETPATHS=""
# run find as this user
LOCALUSER="nobody"
- PRUNEFS : une liste des types de systèmes de fichiers séparés par des espaces qui ne doivent pas être intégrés dans la base de données. La correspondance de type système de fichiers est insensible à la casse. Par défaut, aucun type de système de fichiers n'est ignoré. Lorsque la numérisation d'un système de fichiers est ignorée, tous les systèmes de fichiers montés dans le sous-arbre sont également ignorés, même si leur type ne correspond à aucune entrée dans PRUNEFS.
- PRUNENAMES : Une liste de noms de répertoires séparés par des espaces (sans chemins) qui ne doivent pas intégrés à la base de données. Par défaut, aucun nom de répertoire n'est ignoré. Notez que seuls les répertoires peuvent être spécifiés et aucun mécanisme de motif n'est utilisé.
- PRUNEPATHS : une liste de noms de chemins séparés par des espaces blancheurs qui ne doivent pas être numérisés par mis à jour. Chaque nom de chemin doit être exactement sous la forme dans laquelle le répertoire serait signalé par localisation. Par défaut, aucun chemin n'est ignoré.
Comment faire une recherche de fichiers avec locate
Comme nous venons de le voir, l'utilisation de locate est simple puisqu'il suffit d'indiquer l'élément à rechercher.
locate malekal.txt
Toutefois, il faut bien comprendre que le résultat de la recherche inclut tous les fichiers comportant un mot.
Ainsi si vous recherche sur motif, locate recherche en réalité *motif*.
Par exemple, vous souhaitez rechercher tous les fichiers avec l'extension .conf.
Vous pouvez alors utiliser :
locate .conf
Mais cela va faire ressortir des fichiers contenant le motif de recherche.
Ainsi, on peut tomber sur des fichiers avec une extension .config ou encore adduser.confiles
/usr/src/linux-headers-5.10.0-9-amd64/.config
/usr/src/linux-headers-5.10.0-9-amd64/include/config/auto.conf
/usr/src/xtables-addons-3.13/dkms.conf
/var/lib/dpkg/info/adduser.conffiles
/var/lib/dpkg/info/adduser.config
/var/lib/dpkg/info/apparmor.conffiles
/var/lib/dpkg/info/apparmor.config
/var/lib/dpkg/info/apt-file.conffiles
Ou encore les fichiers du man comme :
/usr/share/man/ru/man5/deluser.conf.5.gz
/usr/share/man/ru/man5/semanage.conf.5.gz
/usr/share/man/sv/man5/adduser.conf.5.gz
De même si vous souhaitez rechercher les fichiers HTML :
locate .html
Cela peut inclure des fichiers comme xxx.html.gz
Comment rechercher un nom de fichiers exact
Pour rechercher des fichiers sur une extension particulière, utilisez locate comme ceci :
locate "*.extf"
Par exemple pour rechercher les fichiers .conf :
locate "*.conf"
Pour trouver les fichiers qui commencent par le mot malekal :
locale malekal*
Mais pour affiner la recherche de fichiers et limiter les résultats, vous pouvez aussi utiliser les expressions régulières.
Pour cela, on utilise l'option -r ou --regex.
Par exemple pour rechercher sur une extension de fichiers exacts :
locate -r "\.conf$"
locate --regex "\.html$"
Enfin vous souhaitez rechercher sur un nom de fichier exact :
locate -r /nomfichier$
Comment ignorer la casse (case insensitive)
Par défaut, locate est case sensitive.
Ainsi lorsque vous rechercher nomfichier.txt, cela ne va pas trouver les versions du fichier avec une majuscules comme Nomfichier.txt, NomFichier.txt, nomfichier.TXT ou NOMFICHIER.TXT.
Pour ignorer la casse, utilisez l'option -i :
locate -i nomfichier.txt
Comment afficher que les fichiers qui existent dans le système
Après une modification récente de fichiers, la base de données n'est pas tout à fait jour.
Ainsi locate peut référencer des fichiers qui n'existent plus.
On peut forcer la mise à jour avec updatedb mais cela peut prendre du temps.
Il existe toutefois une option qui permet de s'assurer que le fichiers existent bien, c'est l'option -e :
locate -e sysctl.conf
Même lorsque le fichier existe dans le MLOCK.DB, il vérifiera toujours que le fichier est physiquement présent dans le système avant de l'afficher.
Comment afficher le nombre d'entrées correspondantes
Parfois il est utile de connaître le nombre d'entrées correspondant à une recherche de fichiers.
Cela est possible avec l'option -c :
locate -c malekal*
Comment limiter les résultats de recherche
Utilisez l'option -l pour limiter le nombre de résultats.
Par exemple pour limiter le résultat à 5 occurrences :
locate *.conf -l 5
Comment visualiser les informations de la base de données
Utilisez l'option -S pour afficher les informations de la base de données.
Vous obtenez alors les informations comme son emplacement, la taille, le nombre de fichiers.
debian@linux:~$ locate -S
Database /var/cache/locate/locatedb is in the GNU LOCATE02 format.
Database was last modified at 2021:12:26 06:25:57.112067013 +0000
Locate database size: 59007254 bytes
All Filenames: 5968003
File names have a cumulative length of 300369566 bytes.
Of those file names,
5 contain whitespace,
0 contain newline characters,
and 4 contain characters with the high bit set.
Compression ratio 80.36% (higher is better)
Liens
- La commande ls Linux : utilisation et exemples
- Commande find Linux : Exemples d'utilisation pour rechercher des fichiers
- Copier ou déplacer un fichier sur Linux
- La commande cp de Linux : Exemples d'utilisation
- Copier des fichiers ou répertoire dans un terminal sur Linux
- rsync : synchroniser, copier des fichiers à distance ou locaux
- Commande locate : utilisations et exemples
- Command find : utilisations et exemples pour rechercher des fichiers
L’article Commande locate : utilisations et exemples est apparu en premier sur malekal.com.
0 Commentaires