Guía completa del comando find de Linux

Introducción

En un entorno Linux, encontrar y procesar rápidamente los archivos deseados es una habilidad básica y fundamental para la administración de servidores y el desarrollo. En este artículo, exploraremos paso a paso y mediante ejercicios prácticos desde las opciones básicas de búsqueda del comando find hasta búsquedas basadas en tamaño de archivo o fecha de modificación, así como la ejecución de operaciones por lotes (-exec) sobre los resultados encontrados.

Configuración del entorno de práctica y búsqueda básica por nombre de archivo

Para crear un directorio exclusivo destinado a practicar con el comando find y desplazarse a él, ejecute el comando mkdir -p ~/find_lab/docs ~/find_lab/logs ~/find_lab/backup && cd ~/find_lab.

mkdir -p ~/find_lab/docs ~/find_lab/logs ~/find_lab/backup && cd ~/find_lab

Para generar archivos de muestra con distintas extensiones que utilizaremos en las pruebas de búsqueda, ejecute el comando touch docs/app.log docs/guide.txt logs/error.log logs/access.log backup/data.bak.

touch docs/app.log docs/guide.txt logs/error.log logs/access.log backup/data.bak

El comando find busca de manera recursiva todos los archivos y directorios bajo la ruta indicada según las condiciones especificadas.
Si ejecuta el comando find . -name "*.log", buscará todos los archivos que terminen con la extensión .log a partir del directorio actual (.) y mostrará su ruta.
Para evitar que la shell expanda previamente el carácter comodín (*), encierre el patrón de búsqueda entre comillas dobles.
⚙️ [Opciones principales]

-name : Busca elementos que coincidan con el nombre o patrón de archivo especificado, distinguiendo entre mayúsculas y minúsculas (case-sensitive).
-iname : Busca elementos que coincidan con el nombre o patrón de archivo especificado, sin distinguir entre mayúsculas y minúsculas (case-insensitive).
-type : Especifica el tipo de archivo a buscar (f para archivos regulares, d para directorios).
-size : Busca según el tamaño del archivo (+ para mayor que, - para menor que).
-mtime : Busca según el tiempo en que se modificó el contenido del archivo (en unidades de días).
-empty : Busca archivos o directorios vacíos.
-exec : Ejecuta por lotes el comando de Linux especificado para cada archivo encontrado.
-delete : Elimina de inmediato los archivos que coincidan con las condiciones de búsqueda.

find . -name “*.log”

Para buscar un archivo por nombre sin distinguir entre mayúsculas y minúsculas, utilice la opción -iname ejecutando find . -iname "GUIDE.TXT".
Aunque el nombre real del archivo esté en minúsculas (guide.txt), coincide con el criterio de búsqueda en mayúsculas y se localiza la ruta correctamente.

find . -iname “GUIDE.TXT”

Búsqueda de archivos grandes por tipo y tamaño

Para probar la búsqueda por condición de tamaño de archivo, ejecute el comando truncate -s 15M ~/find_lab/backup/large_archive.iso para crear un archivo de muestra grande de 15 MB.

truncate -s 15M ~/find_lab/backup/large_archive.iso

Para una práctica adicional de comparación de tamaños, ejecute el comando truncate -s 2M ~/find_lab/logs/big_trace.log para crear un archivo de registro de muestra de 2 MB.

truncate -s 2M ~/find_lab/logs/big_trace.log

Para filtrar y buscar únicamente rutas de directorios excluyendo archivos regulares, ejecute el comando find ~/find_lab -type d aplicando la opción -type d.
Se mostrará limpiamente solo la lista de directorios existentes bajo la ruta indicada.

find ~/find_lab -type d

Para localizar archivos regulares (-type f) que superen los 10 MB (-size +10M) y verificar su información detallada al mismo tiempo, ejecute el comando find ~/find_lab -type f -size +10M -exec ls -lh {} +.
Se encuentra el archivo large_archive.iso de 15 MB que coincide con el criterio y se muestra junto con sus permisos y detalles de tamaño.

find ~/find_lab -type f -size +10M -exec ls -lh {} +

Búsqueda de archivos modificados por tiempo (mtime/mmin)

Para la práctica de búsqueda de archivos según el tiempo transcurrido, ejecute el comando touch -d "2 days ago" ~/find_lab/backup/old_backup.tar para crear un archivo de muestra modificado hace dos días.

touch -d “2 days ago” ~/find_lab/backup/old_backup.tar

Para probar la búsqueda de archivos modificados recientemente, ejecute el comando touch ~/find_lab/logs/recent.log para crear un archivo de muestra con la marca de tiempo actual.

touch ~/find_lab/logs/recent.log

Para buscar archivos regulares modificados en las últimas 24 horas, ejecute el comando find ~/find_lab -type f -mtime -1 aplicando la opción -mtime -1.
Se mostrará correctamente la lista de todos los archivos creados o modificados dentro del periodo de referencia (24 horas).

find ~/find_lab -type f -mtime -1

Para buscar archivos antiguos modificados hace más de 24 horas (1 día), ejecute el comando find ~/find_lab -type f -mtime +1 aplicando la opción -mtime +1.
Se filtrará y mostrará con precisión únicamente el archivo old_backup.tar que se generó con la fecha de hace dos días.

find ~/find_lab -type f -mtime +1

Control por lotes sobre resultados de búsqueda: opción -exec y eliminación

Para realizar la práctica de gestión por lotes y cambio de permisos, cree un directorio temporal y genere archivos temporales de muestra ejecutando el comando mkdir -p ~/find_lab/temp && touch ~/find_lab/temp/cache1.tmp ~/find_lab/temp/cache2.tmp.

mkdir -p ~/find_lab/temp && touch ~/find_lab/temp/cache1.tmp ~/find_lab/temp/cache2.tmp

Para cambiar por lotes los permisos de acceso a 644 en todos los archivos con extensión .tmp encontrados, ejecute el comando find ~/find_lab/temp -name "*.tmp" -exec chmod 644 {} \; aplicando la opción -exec.
El símbolo {} se sustituye por la ruta de cada archivo encontrado, y \; indica el final del comando pasado a la sintaxis -exec.

find ~/find_lab/temp -name “*.tmp” -exec chmod 644 {} ;

Para verificar si el cambio de permisos se aplicó correctamente, ejecute el comando ls -l ~/find_lab/temp.
En la salida, podrá comprobar que ambos archivos temporales se han modificado con permisos de lectura y escritura (-rw-r--r--, 644).

ls -l ~/find_lab/temp

Para eliminar por lotes los archivos .tmp que coinciden con el criterio de búsqueda, ejecute el comando find ~/find_lab/temp -name "*.tmp" -exec rm -f {} \; encadenando el comando rm -f.
Los archivos de destino encontrados se eliminarán a la vez sin requerir confirmaciones adicionales.

find ~/find_lab/temp -name “*.tmp” -exec rm -f {} ;

Para confirmar finalmente que todos los archivos temporales se eliminaron de manera correcta, ejecute el comando ls -la ~/find_lab/temp.
Podrá observar que solo permanecen el directorio actual (.) y el directorio superior (..), y que todos los archivos temporales creados se eliminaron por completo.

ls -la ~/find_lab/temp

Hasta aquí hemos revisado de forma concisa desde las opciones clave de búsqueda del comando find en Linux hasta técnicas de procesamiento por lotes listas para aplicar en el trabajo real.
Pruebe a combinar las opciones aprendidas según sus necesidades para llevar la búsqueda y administración de archivos a un nivel mucho más eficiente.