En Linux, el comando de búsqueda se usa para buscar archivos o carpetas desde la línea de comandos. Es un comando complejo y tiene una gran cantidad de opciones, argumentos y modos.
El uso más común del comando de búsqueda es buscar archivos utilizando una expresión regular o los nombres de archivo completos que se buscarán.
[ También te puede interesar:Cómo encontrar archivos que contengan una cadena de texto específica en Linux ]
Por ejemplo, para buscar archivos con nombres que comiencen con 'file_' , podemos ejecutar:
$ find . -name 'file_*'
Como puede ver arriba, genera las rutas completas de los archivos que devuelve la búsqueda. Aquí, el '.'
implica el directorio actual . Find buscará el patrón de nombre de archivo en el directorio actual, todos los subdirectorios, y así sucesivamente hasta el nivel más profundo de la estructura de archivos. Del mismo modo, puede tener cualquier otro directorio en lugar de '.'
.
Excluir un directorio mientras busca archivos
Ahora, puede haber escenarios en los que un usuario esté seguro de que una determinada carpeta o carpetas no contienen el archivo que se busca. Por lo tanto, es una buena idea excluir dichas carpetas de la búsqueda, para que el comando devuelva los resultados más rápido.
Para excluir un directorio de la búsqueda, use el '-prune'
argumento:
$ find . -name './test' -prune -o -name 'file_*'
Primero analicemos lo que está pasando aquí.
La parte "-name './test' -prune"
implica:excluir la carpeta ‘test’ de buscar Después de eso, '-o'
le dice al comando:qué más se debe hacer una vez que el comando excluye ‘test’ . Simplemente pasamos el patrón descrito en el ejemplo anterior aquí.
Este patrón ahora se ejecutará en todas las carpetas, excepto ‘test’ .
Ahora puede ver que la búsqueda excluye la carpeta ‘test’ . Sin embargo, el nombre de la carpeta en sí se está imprimiendo.
Excluir un nombre de directorio de la salida de búsqueda
Para evitar esto, simplemente agregue '-print'
al final. Esta opción excluirá el nombre del directorio de la salida.
$ find . -name './test' -prune -o -name 'file_*' -print
El patrón ahora ha buscado archivos en el directorio actual y ha excluido la ‘prueba’ directorio.
Conclusión
En este artículo, hemos visto cómo excluir un directorio al buscar archivos usando el comando de búsqueda. Tenga en cuenta que los ejemplos proporcionados en este artículo buscan archivos basados en nombres de archivo ('-name')
. Hay muchas otras formas de buscar archivos dentro del comando de búsqueda. Asegúrese de consultar la página de manual del comando de búsqueda para explorarlos en profundidad.
Gracias por leer y no dude en dejar comentarios o preguntas en los comentarios a continuación.