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.--regexptoma una expresión regular básica. Intenta cambiar--regexpa--regex(nop). La página del manual dice que--regexsí 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
locateusa 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
findlocalizar 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
locatedatos comofindcomandos también.fuente
locatemás rápido quefindincluso si tengo que hacer unupdatedbprimero. 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
-ibandera 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/jacky que contienenMY,My,my, omYen 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!locateacelerar los resultados. Por ejemplo:echo /home/jack/**/*My.*