Comment puis-je utiliser locate uniquement pour un directory

Cela trouve un grand nombre de files qui sont sous divers sous-directorys de "Dropnot"

$ locate Dropnot 

Puis-je find uniquement l'location du directory avec locate ? (quel directory "Dropnot" est dans)

Donc, si Dropnot est dans /home/me/ , c'est la seule input qui est renvoyée.

Si oui, quel est le moyen le plus simple / le plus court?

De preference par le biais d'un drapeau ou d'un symbole, plutôt que de la mettre en place et de l'attraper, etc., mais je prendrais n'importe quoi comme option.

Peut-être une sorte de Dropnot $ pour la fin de la ligne? (mais n'a pas fonctionné).

Il n'y a pas d'option pour utiliser locate pour find le type de file sélectionné (comme le directory), mais vous pouvez utiliser la syntaxe de votre question – Dropnot$ pour find les lignes qui se terminent par Dropnot . Pour cela, vous devez utiliser l'option -e pour localiser l'expression régulière POSIX.

Dans ce cas, vous devriez utiliser:

 locate -e Dropnot$ 

Il est important de savoir quelle version de locate vous avez. Dans mon système (Gentoo Linux) j'ai Secure Locate:

 $ locate --version Secure Locate 3.1 - Released March 7, 2006 

dans lequel il n'y a pas d'option uther partir de la uther d' uther . Cette option est fournie par GNU Locate du package findutils:

 $ ./locate --version locate (GNU findutils) 4.4.2 

Si vous voulez utiliser regexp avec GNU Locate, vous devez utiliser -r switch -e .

J'ai mlocate installé. C'est le défaut dissortingbué par RedHat, donc il sera sur Fedora, RHEL, CentOS. De l' man 1 locate

 -b, --basename Match only the base name against the specified patterns. This is the opposite of --wholename. 

Donc, si vous exécutez locate -b '\Dropknot' , il ne rapportera que des files ou des directorys avec exactement cette string.

 Because \ is a globbing character, this disables the implicit replacement of NAME by *NAME*. 

Avec GNU locate (les autres implémentations de localization peuvent différer):

 locate '*/Dropnot' locate Dropnot | grep '/Dropnot$' 

Lorsqu'il n'y a pas de caractère générique dans l'argument, locate search un path ayant le terme de search spécifié comme sous-string. Lorsque l'argument est un model de shell contenant un ou plusieurs caractères generics, searchz une correspondance complète. Si vous ne voulez pas sortir le /Dropnot à la fin:

 locate -0 '*/Dropnot' | xargs -0 -n1 dirname locate Dropnot | sed -n 's:/Dropnot$::p' 

Dans OSX, le globbing est autorisé mais doit être échappé. Si aucun globbing n'est utilisé, il est supposé être des deux côtés du terme de search. (Tout cela provient des pages man).

En bref,

 locate '*/Dropnot' 

travaille pour moi dans OSX.

Si vous êtes sur RedHat, vous avez probablement mlocate installé pas Secure Locate. Dans ce cas, il n'y a pas d'option -e et vous devez utiliser -r ou –regexp pour effectuer une search à l'aide d'expressions régulières de base.