¿Cómo uso el comando de localización dentro de un directorio especificado?

16

Estoy usando el locatecomando en Linux. Mi uso actual de él busca en todo el sistema de archivos. Solo quiero que busque dentro de un directorio específico. ¿Cómo puedo hacer esto?

telnet
fuente
TLDR: Aquí hay un alias de terminal para realizar locatebúsquedas dentro de un directorio específico: una alias my_locate="updatedb -U /path/to/yourdir -o /path/to/your_dir_locate.db; locate -d /path/to/dir_locate.db " vez que el alias es efectivo, en el tipo de terminal my_locate *foo*y estás fuera de las carreras. Puede concatenar las actualizaciones de la base de datos y localizar la búsqueda utilizando el carácter de dos puntos para concatenar las bases de datos. rtfm: linux.die.net/man/8/updatedb
Eric Leschinski

Respuestas:

11

Otro enfoque sería utilizar la coincidencia de patrones en locate:

locate '/some/directory/*filename*'

Compare la salida de los comandos a continuación:

$ 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* da el mismo resultado.

Paweł Brodacki
fuente
3
+1 Esta es la respuesta correcta. Tenga en cuenta que si incluye el comodín, los límites se vuelven fijos. Eso es en el ejemplo anterior, $ locate '/usr/lib64/*tmpfile'no devolverá resultados.
xofer
Si desea más control de comodines simples pueden ofrecer, siempre se puede canalizar los resultados locatea través grep.
Ladadadada
5

Cree una base de datos de slocate para su directorio específico con:

updatedb -U /path/to/directory

y busca con:

locate <search_string>

ACTUALIZAR

Esto funciona bien en mi sistema Gentoo, pero CentOS no incluye la -Uopción. Entonces, puedes probar a continuación en su lugar:

Construya la base de datos con:

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

y busca:

# locate -d dir_locate.db <search_string>
quanta
fuente
3
"localizar -U" arroja un error de opción no válida ... ¿Adivina que querías decir "actualizadob -U"? También es bueno tener en cuenta que esto requiere una reconstrucción mlocate.db (updatedb) si alguna vez desea buscar en otro directorio.
gharper
Oh, en mi Gentoo funciona bien, pero CentOS no incluye esta opción.
quanta
¿Votar abajo? ¿Podrías dejar un comentario?
quanta
Si tiene un error como:, updatedb: can not change group of file 'db.db.kHhzFz' to 'mlocate': Operation not permittedverifique cómo usar el comando updatedb como usuario ordinario en Linux .
kenorb
2

La respuesta más simple que se me ocurre es

locate search_term | grep "/specified/directory"

La mejor solución podría ser utilizar "buscar" y sus opciones de ruta ...

gharper
fuente
0

La forma más fácil es como en el siguiente ejemplo:

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

Cambie $PWDa su directorio específico.

El ejemplo anterior creará su base de datos local solo para el directorio específico.

kenorb
fuente