Come si usa il comando Locate in una directory specificata?


16

Sto usando il locatecomando su Linux. Il mio attuale utilizzo di esso cerca in tutto il filesystem. Voglio solo cercare all'interno di una directory specifica. Come posso fare questo?


TLDR: ecco un alias terminale per effettuare la locatericerca all'interno di una directory specificata: alias my_locate="updatedb -U /path/to/yourdir -o /path/to/your_dir_locate.db; locate -d /path/to/dir_locate.db " Una volta che l'alias è efficace, sul tipo di terminale my_locate *foo*e sei pronto per le gare. È possibile concatenare gli aggiornamenti del database e individuare la ricerca utilizzando il carattere due punti per concatenare i database. rtfm: linux.die.net/man/8/updatedb
Eric

Risposte:


11

Un altro approccio sarebbe quello di utilizzare la corrispondenza del modello in locate:

locate '/some/directory/*filename*'

Confronta l'output dei comandi di seguito:

$ locate tmpfile
/usr/lib64/perl5/auto/POSIX/tmpfile.al
/usr/share/man/fr/man3/tmpfile.3.gz
/usr/share/man/ja/man3/tmpfile.3.gz
/usr/share/man/man3/tmpfile.3.gz
/usr/share/man/man3p/tmpfile.3p.gz
$
$ locate '/usr/lib64/*tmpfile*'
/usr/lib64/perl5/auto/POSIX/tmpfile.al
$ 

locate /usr/lib*tmpfile* dà lo stesso risultato.


3
+1 Questa è la risposta corretta. Se si include il carattere jolly, i limiti diventano fissi. Questo è nell'esempio precedente, non $ locate '/usr/lib64/*tmpfile'verrà restituito alcun risultato.
xofer,

Se si desidera un maggiore controllo di quello che possono offrire semplici caratteri jolly, è sempre possibile reindirizzare i risultati di locatethrough grep.
Ladadadada,

5

Crea database slocate per la tua directory specifica con:

updatedb -U /path/to/directory

e cerca con:

locate <search_string>

AGGIORNARE

Funziona bene sul mio sistema Gentoo ma CentOS non include l' -Uopzione. Quindi, puoi provare di seguito invece:

Costruisci il database con:

# updatedb -U /path/to/dir -o dir_locate.db

e cerca:

# locate -d dir_locate.db <search_string>

3
"Locate -U" genera un errore di opzione non valido ... Indovinate che intendevi "aggiornatob -U"? Va anche notato che ciò richiede una ricostruzione di mlocate.db (aggiornatob) se si desidera cercare un'altra directory.
Gharper,

Oh, sul mio Gentoo funziona benissimo ma CentOS non include questa opzione.
quanta,

Voto negativo? Potresti per favore lasciare un commento?
quanta,

Se hai un errore come :,updatedb: can not change group of file 'db.db.kHhzFz' to 'mlocate': Operation not permitted controlla come usare il comando updateb come un normale utente su Linux .
Kenorb,

2

La risposta più semplice che mi viene in mente è

locate search_term | grep "/specified/directory"

La soluzione migliore potrebbe essere quella di utilizzare "trova" e le sue opzioni di percorso ...


0

Il modo più semplice è come nell'esempio seguente:

updatedb -o ~/tmp.db -l0 -U $PWD
locate   -d ~/tmp.db "foo"

Passa $PWDalla tua directory specifica.

L'esempio sopra creerà il tuo database locale solo per la directory specifica.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.