Buscar archivos en Linux con el comando find

Buscar archivos en Linux con el comando find

Buscar archivos en Linux desde la línea de comandos es fácil usando el comando find. Este comando de Linux usa un sencillo mecanismo condicional para filtrar objetos. Veamos cómo se usa el comando find en Linux para encontrar un archivo desde la línea de comandos.

Comando find en Linux

El comando find se usa para localizar archivos en Linux, basándose en los criterios especificados por el usuario. La sintaxis básica del comando es la siguiente:

find -opciones /ruta expresión

Atributos del comando find

  • -opciones: las opciones o parámetros de búsqueda permiten controlar el comportamiento y el método de optimización del proceso de find.
  • /ruta: define la ruta de acceso al directorio a partir de la cual el comando find empezará a filtrar.
  • expresión: define las acciones a realizar para crear un resultado.

Opciones del comando find

Localizar archivos por nombre en Linux

Para encontrar archivos por nombre en un directorio y todos sus subdirectorios, hay que introducir el siguiente comando en la línea de comandos:

find /ruta -name nombredelarchivo

Localizar archivos por extensión

Para encontrar archivos por extensión en un directorio y todos sus subdirectorios, hay que introducir el siguiente comando en la línea de comandos:

find /ruta -name *.html

Localizar archivos en el directorio actual

Para encontrar archivos en el directorio actual, hay que introducir el siguiente comando en la línea de comandos:

find . -name nombredelarchivo.html

Localizar archivos modificados durante un período de tiempo

Para encontrar archivos que hayan sido modificados durante la semana anterior, hay que introducir el siguiente comando en la línea de comandos:

find /ruta -mtime 7 “.html”

Localizar archivos modificados durante un período de tiempo por un usuario específico

Para encontrar archivos que hayan sido modificados durante la semana anterior por un usuario en particular, hay que introducir el siguiente comando en la línea de comandos:

find /ruta -user nombredeusuario -mtime 7 “.html”

Limitar la búsqueda a un número específico de subdirectorios

Para limitar la búsqueda a una cantidad específica de subdirectorios, hay que añadir la opción -maxdepth X al comando:

find -maxdepth 3 /ruta -name *.html

Ignorar mayúsculas y minúsculas

Para hacer una búsqueda ignorando mayúsculas y minúsculas, hay que añadir la opción -iname al comando:

find /ruta -iname *.html

Buscar archivos

Para buscar archivos exclusivamente, hay que añadir la opción -type f al comando:

find /ruta -type f -name “*.html”

Buscar directorios

Para buscar directorios exclusivamente, hay que añadir la opción -type d al comando:

find /ruta -type d -name “*.html”

Seguir y mostrar enlaces simbólicos

Dado que el comando find ignora los enlaces simbólicos por defecto, hay que añadir la opción -L al comando para seguirlos y mostrarlos:

find -L /ruta -name *.html

Localizar archivos por tamaño

Para encontrar archivos de más de 500 MB en un directorio y todos sus subdirectorios, hay que introducir el siguiente comando en la línea de comandos:

find /ruta -size +500M

Combinar dos condiciones o filtros

Por ejemplo, para filtrar archivos de entre 500 MB y 1 GB en un directorio y todos sus subdirectorios, hay que introducir el siguiente comando en la línea de comandos:

find /ruta -size +500M -and -size -1G

Filtrar por al menos una de las condiciones que se especifican

Por ejemplo, para filtrar archivos por una de las extensiones indicadas en un directorio y todos sus subdirectorios, hay que introducir el siguiente comando en la línea de comandos:

find /ruta -name *.docx -or -name *.odt

Excluir la segunda condición

Por ejemplo, para excluir una extensión de la búsqueda en un directorio y todos sus subdirectorios, hay que introducir el siguiente comando en la línea de comandos:

find /ruta -name *.docx -not -name *.odt
Opción o parámetro de búsquedaUso
-nameFiltrar archivos por nombre.
-inameHacer una búsqueda por nombre sin tener en cuenta mayúsculas y minúsculas para localizar un archivo.
.Buscar en el directorio actual.
-typeFiltrar archivos por tipo de archivo.
-userFiltrar archivos por usuario.
-mtimeFiltrar archivos limitando el período de tiempo de su modificación.
-maxdepthLimitar la búsqueda a un número concreto de subdirectorios.
-LIncluir los enlaces simbólicos en la búsqueda.
-sizeFiltrar por tamaño de archivo.
-andSe sitúa entre dos condiciones para indicar que es necesario incluir ambas.
-orSe sitúa entre dos condiciones para indicar que es necesario filtrar por al menos una de las condiciones.
-notSe sitúa entre dos condiciones para indicar que es necesario ignorar la segunda condición. 

Optimizaciones del comando find 

Estas son las tres fases de optimización para mejorar el filtrado cuando se usa el comando find en Linux.

-O1: por defecto

-O1 es la configuración estándar. Permite que find empiece a filtrar por nombre de archivo antes de ejecutar cualquier otro test.

find -O1 /ruta -name "*.html"

-O2: nombre de archivo y tipo de archivo

-O2 permite que find filtre por nombre de archivo y tipo de archivo antes de pasar a los filtros que requieran más recursos.

find -O2 /ruta -name "*.html"

-O3: eficiencia y probabilidad de éxito

-O3 permite que find reorganice automáticamente los filtros para priorizar la eficiencia y la probabilidad de éxito.

find -O3 /ruta -name "*.html"

Búsquedas basadas en contenido: Find + Grep

El comando find de Linux solo filtra archivos en base a nombres de archivo y metadatos. Así que, para buscar archivos en base a su contenido, es necesario añadir el comando grep a la línea de comandos:

find /ruta -type f -exec grep “contenido” ‘{}’ \; -print
  • -exec: es un comando que permite al comando find ejecutar una tarea específica una vez en cada archivo que se ajuste a la búsqueda.
  • ‘{}’: las llaves son el marcador de posición de los resultados que se ajustan a la búsqueda.
  • \;: la opción -exec se cierra con una barra invertida y un punto y coma para evitar que pueda ser interpretada por el shell.
  • -print: muestra los resultados en la pantalla.

Si te ha gustado, compártelo en redes sociales

Servicios gestionados

Administración de sistemas y externalización IT adaptadas a las necesidades de cada proyecto.

DESCUBRIR MÁS