Utilizo localizar todo el tiempo para buscar archivos de los que conozco el nombre, localizar es muy rápido y eso me encanta. Para los archivos creados recientemente, encontrar es excelente, normalmente con archivos creados recientemente, sé dónde se crearon básicamente, así que no tengo que buscar en todo mi sistema de archivos.
Sin embargo, cuando he olvidado la ubicación de un directorio, ni buscar ni localizar parecen ideales.
Localizar siempre escupe demasiada información porque cada archivo dentro de un directorio también es una coincidencia para localizar. Por ejemplo, si estaba buscando un directorio llamado registro en algún lugar de mi sistema de archivos, el registro de localización arrojaría toneladas y toneladas de resultados. Si hago lo mismo con find, find / -name log -type d find tarda unos minutos en ejecutarse y escupe todo tipo de errores de permisos cada vez que encuentra una carpeta que no puede leer.
¿Hay una mejor manera?
Respuesta: Así que me quedo con grep hasta que encuentre algo más:
locatedir () {
for last; do true; done
if [[ $last == *\/* ]]
then
locate $@ | grep "${last}\$"
else
locate $@ | grep "/${last}\$"
fi
}
locate
tiene su propia capacidad de expresión regular incorporada:-r
o--regex
... para una gama completa de opciones, ver: información localizar'
en este caso:locate -r /log$
es suficiente.Has probado:
locate /home/insertusernamehere/*/filename
?o
locate file | grep -i '^/home/.*/examplesubdirectory'
?o alguna variación de tales?
fuente
grep
no es necesario, y como se ve en la primera opción sugerida, tampoco lo son las expresiones regulares.Aquí está
fuente