53 votes

Utiliser "locate" dans un répertoire spécifique ?

Je me demandais comment restreindre le champ de recherche de "locate" à un certain répertoire ?

Par exemple, comment trouver les fichiers/répertoires dont le nom contient la chaîne "math" dans le répertoire "/home/tim/science/" ?

Merci et salutations !

17voto

Adam Byrtek Points 9538

Le faire passer par grep, comme ceci

$ locate less | grep ^/bin
/bin/bzless
/bin/less
/bin/lessecho
/bin/lessfile
/bin/lesskey
/bin/lesspipe
/bin/zless

Edit : L'autre réponse est meilleure, je ne savais pas que l'on pouvait passer un motif à localiser.

8voto

joe Points 191

Vous pouvez utiliser locate /rootpath/*filenamespec Je n'avais pas encore essayé, mais cela semble fonctionner. Pour faire votre exemple, ce serait locate /home/tim/science/*math*

Vous pouvez consulter le site find plutôt que la commande locate pour ce genre de comportement. La syntaxe serait la suivante find rootforsearch -name filenamepattern -print . Dans ce cas, votre exemple nécessiterait find /home/tim/science -name *math* -print Il n'est pas aussi rapide que locate car il n'y a pas de base de données à rechercher... il recherche en fait dans le système de fichiers. Il existe également de nombreuses options autres que l'impression, si vous avez l'intention de faire quelque chose avec le fichier.

3voto

alex440 Points 131

Pour moi, la solution la plus pratique est

cd /home/tim/science
locate math | grep `pwd`

0voto

pudl Points 1

J'aime utiliser locate --all comme dans peut-être locate -A tim science math . Je pense que c'est dans l'esprit de la simplicité de la localisation.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X