A menudo es necesario buscar ciertos tipos de archivos en ambientes Linux y no sabemos la forma correcta de buscarlos adecuadamente sin dar muchas vueltas perdiendo tiempo.
Para distros Linux, se ha desarrollado un comando llamado find el cual ha sido desarrollado para filtrar recursivamente objetos en el sistema de archivos tomando como base un mecanismo condicional. Con este comando find podremos buscar un archivo o directorio en su sistema de archivos.
Si incluimos el parámetro -exec, los archivos pueden ser encontrados y procesados inmediatamente dentro del mismo comando.
1. Encontrar archivos por nombre o extensión comandos Linux
Podremos usar find desde la línea de comandos para localizar un archivo específico por nombre o extensión.
Su sintaxis es:
find /home/username/ -name "*.extensión"Por ejemplo, buscaremos archivos terminados en .gz:
2. Comandos y sintaxis prácticas para usar con find comandos Linux
Con el comando find tenemos algunas opciones de parámetros como:
find opciones inicio / ruta expresiónEl atributo opciones controlará el comportamiento y el método de optimización del proceso de búsqueda. El atributo inicio / ruta definirá el directorio de nivel superior en el que find iniciará el filtrado.
El atributo expresión controla las pruebas que buscan en la jerarquía de directorios para producir salida.
Por ejemplo, podemos ejecutar lo siguiente:
find -O3 -L /var/www/ -name "*.html"Este comando habilita el nivel máximo de optimización (-O3) y permite seguir los enlaces simbólicos (-L) para buscar en el árbol de directorio completo en la ruta /var/www/ para los archivos que terminan con .html.
3. Opciones y optimización con Find comandos Linux
La configuración por defecto de Find para buscar ignorará los enlaces simbólicos (archivos de acceso directo), si deseamos que find siga y tome los enlaces simbólicos, podremos agregar la opción -L al comando como vimos anteriormente. Find cuenta con tres (3) niveles de optimización que son -O1, -O2 y -O3.
La optimización -O1 es la predeterminada y obliga a buscar para filtrar basado en nombre de archivo antes de ejecutar todas las otras pruebas.
La optimización en el nivel -O2 da prioridad a los filtros de nombre de archivo, como en -O1 y, a continuación, ejecuta todo el filtrado de tipo de archivo antes de continuar con otras condiciones más intensivas en recursos. La optimización de nivel -O3 permite a find realizar una optimización más profunda y reordena todas las pruebas en función de su gasto relativo y la probabilidad de mejores resultados.
Algunas de las opciones son:
-O1 (Predeterminado)
-O2
-O3
-maxdepth X
-iname
-not
-type f
-type d
4. Encontrar archivos por modificación de tiempo comandos Linux
El comando find tiene la capacidad de filtrar una jerarquía de directorios basada en la última modificación del archivo.
Las sintaxis son:
find / -name "*conf" -mtime 8 find /home/user/ -name "*conf" -mtime 2El primer comando desplegara una lista de todos los archivos de todo el sistema de archivos que terminan con los caracteres conf y han sido modificados en los últimos 8 días. El segundo comando filtra el directorio de inicio del usuario para los archivos con nombres que terminan con los caracteres conf y se han modificado en los 2 días anteriores.
Usaremos la siguiente sintaxis:
find . -type f -exec grep "ejemplo" '{}' \; -printEsto busca todos los objetos de la jerarquía de directorios actual (.) el cual es un archivo (-tipo f) y luego se ejecuta el comando grep "ejemplo" para cada archivo que cumpla con las condiciones. Los archivos que coinciden se imprimen en la pantalla (-print). Las llaves ({}) son un marcador de posición para los resultados del resultado de búsqueda. El {} está encerrado entre comillas simples (') para evitar entregar grep un nombre de archivo mal formado. El comando -exec se termina con un punto y coma "( ; )", que debe escaparse "( \ ; )" para evitar la interpretación por el intérprete de comandos.
Su sintaxis es:
find . -name "rc.conf" -exec chmod o+r '{}' \;Esto filtrará todos los objetos de la jerarquía actual (.) para los archivos denominados rc.conf y ejecutará el comando chmod o + r para modificar los permisos de los resultados de búsqueda.
Así find es un aliado para la búsqueda completa de archivos en Linux.
muy bien!!!