¿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?
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:
+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:
"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.
locate
búsquedas dentro de un directorio específico: unaalias 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 terminalmy_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/updatedbRespuestas:
Otro enfoque sería utilizar la coincidencia de patrones en
locate
:Compare la salida de los comandos a continuación:
locate /usr/lib*tmpfile*
da el mismo resultado.fuente
$ locate '/usr/lib64/*tmpfile'
no devolverá resultados.locate
a travésgrep
.Cree una base de datos de slocate para su directorio específico con:
y busca con:
ACTUALIZAR
Esto funciona bien en mi sistema Gentoo, pero CentOS no incluye la
-U
opción. Entonces, puedes probar a continuación en su lugar:Construya la base de datos con:
y busca:
fuente
updatedb: can not change group of file 'db.db.kHhzFz' to 'mlocate': Operation not permitted
verifique cómo usar el comando updatedb como usuario ordinario en Linux .La respuesta más simple que se me ocurre es
La mejor solución podría ser utilizar "buscar" y sus opciones de ruta ...
fuente
La forma más fácil es como en el siguiente ejemplo:
Cambie
$PWD
a su directorio específico.El ejemplo anterior creará su base de datos local solo para el directorio específico.
fuente