Estoy tratando de usar el comando de localización para encontrar archivos en mi carpeta de inicio, sin embargo, cada vez que intento ejecutar esto no obtengo resultados:
locate -i -l 4 --regexp '^\/home\/jack\/[A-Za-z0-9\/\ ]*(My.)*$'
También lo he intentado, ^\/home\/jack\/^(?!\.)[A-Za-z0-9\/\ ]*(My.)*$
pero eso tampoco devuelve resultados.
El archivo que estoy buscando solo para probarlo es /home/jack/Music/Foals/My Number.flac
Me gustaría excluir los resultados de los archivos ocultos de mi búsqueda.
bash
regular-expression
locate
Jack Jones
fuente
fuente
locate
. ¿Tiene sentido combinar-b
(es decir, " Hacer coincidir solo el nombre base con los patrones especificados") con una ruta--regexp
? ¿Por qué escapas del/
s?(My.)*
supone que debe hacer?My.*$
trabajos. Tienes que escapar()
en REs básicos.--regexp
toma una expresión regular básica. Intenta cambiar--regexp
a--regex
(nop
). La página del manual dice que--regex
sí coincide con la expresión regular de expresiones regulares.Respuestas:
Esto parece hacer el trabajo.
Citas del manual:
fuente
Cómo localizar funciona
El índice de archivos que
locate
usa el comando solo se reconstruye una vez al día, por lo general. Está construido por esta tarea cron,/etc/cron.daily/mlocate
. Por lo tanto, es probable que sus entradas aún no estén allí. Puede volver a ejecutarlo si desea que reconstruya manualmente estos índices.Usando find
Sin embargo, probablemente sea mejor usar un comando como
find
localizar archivos en su directorio de inicio.Usando una GUI
También podría estar interesado en una herramienta de búsqueda gráfica. Eche un vistazo a este otro U&L Q&A titulado: GTK Frontend para localizar qué cubre una de esas herramientas llamada Catfish. Esta herramienta puede utilizar tanto
locate
datos comofind
comandos también.fuente
locate
más rápido quefind
incluso si tengo que hacer unupdatedb
primero. Mientras la base de datos ya esté razonablemente actualizada en la mayoría de los sistemasupdatedb
, no tomará mucho tiempo. Sin embargo, encontrar la sintaxis es probablemente más fácil en este caso.find
.También podría adoptar un enfoque diferente:
No estoy seguro de lo que estás tratando de hacer. Estás usando la
-i
bandera para que sea sensible a mayúsculas y su expresión regular no es muy específica, pareces superior que desee encontrar todos los archivos o carpetas que están bajo/home/jack
y que contienenMY
,My
,my
, omY
en cualquier parte del nombre de archivo. Si es así, solo correfuente
Esto debería funcionar: solo coincide con archivos y carpetas no ocultos:
aún más simple: coincide con los archivos que no tienen directorios ocultos en ningún lugar del árbol de directorios. Probablemente esto es lo que quieres:
fuente
locate
, ya que estoy tratando de integrarlo en una interfaz gráfica de usuario de Python para buscar a medida que escribe y es más rápido. ¡Pero gracias de cualquier manera!locate
acelerar los resultados. Por ejemplo:echo /home/jack/**/*My.*