find
100%

Línea de Comandos · Lección 14

find

Aprende a buscar en árboles de directorios por nombre, tipo, tamaño y fecha, y a actuar sobre coincidencias verificadas.

Con innumerables archivos en un sistema, puede ser difícil localizar uno específico. El comando find busca en árboles de directorios usando criterios como nombre, tipo, tamaño y tiempo de modificación.

Elección del lugar donde buscar

La sintaxis básica es:

find [PATH] [EXPRESSION]

Especificas el directorio donde buscar y los criterios de lo que buscas.

Por ejemplo, para buscar un archivo llamado puppies.jpg dentro del directorio /home y todos sus subdirectorios, usarías:

$ find /home -name puppies.jpg

Las búsquedas son recursivas por defecto, así que find /home busca dentro de /home y sus subdirectorios.

Utiliza . como ruta inicial cuando quieras buscar en el árbol del directorio actual.

¿Qué orden busca en el directorio actual y sus descendientes elementos llamados notes.txt?

Coincidencia por nombre y tipo

La prueba -name acepta un nombre base exacto o un patrón al estilo de la shell. Entrecomilla los patrones con comodines para que la shell actual los entregue sin modificar a find:

$ find . -name "*.txt"

Sin comillas, la shell podría expandir *.txt en el directorio actual antes de que se inicie find. Utiliza -iname en lugar de -name si la coincidencia no debe distinguir mayúsculas y minúsculas.

$ find /home -type d -name MyFolder

En este comando, establecemos el tipo a d para directorio y buscamos un elemento llamado MyFolder. Para buscar específicamente archivos regulares, usarías -type f.

¿Qué orden encuentra archivos normales cuyos nombres terminan en .txt bajo el directorio actual?

Coincidencia por tamaño y fecha de modificación

Puedes buscar por tamaño de archivo:

$ find . -type f -size +10M
$ find . -type f -size -1k

La M mayúscula representa unidades de 1 048 576 bytes y la k minúscula, unidades de 1024 bytes. find redondea los tamaños hacia arriba según la unidad elegida antes de comparar el número, por lo que los límites se basan en esas unidades.

También puedes buscar por tiempo de modificación:

$ find . -type f -mtime -7
$ find . -type f -mtime +30

-mtime mide periodos completos de 24 horas desde la modificación. -mtime -7 selecciona un valor inferior a 7 y -mtime +30, uno superior a 30; estas pruebas no se basan en los límites de los días del calendario.

¿Qué orden encuentra bajo . archivos normales cuya antigüedad de modificación es inferior a siete periodos completos de 24 horas?

Mostrar coincidencias y actuar sobre ellas

Por defecto, find imprime las rutas coincidentes. Puedes agregar acciones como -print, -delete o -exec.

Imprimir coincidencias explícitamente:

$ find . -name "*.log" -print

Ejecutar ls -l en cada coincidencia:

$ find . -name "*.log" -exec ls -l {} \;

En la forma con \;, {} se sustituye por una ruta coincidente en cada invocación. El punto y coma termina la acción -exec y se escapa para que la shell se lo entregue a find.

Antes de usar una acción destructiva como -delete o una orden -exec que modifique archivos, ejecuta las mismas pruebas con -print y revisa todos los resultados. Una ruta inicial más limitada y -maxdepth N también pueden restringir la búsqueda.

Estás preparando una orden find que más adelante podría eliminar archivos .log antiguos. ¿Qué debes hacer primero?

En find . -name "*.log" -exec ls -l {} \;, ¿qué representa {}?

Los mensajes de permiso denegado suelen indicar que la cuenta actual no puede recorrer parte del árbol. Prefiere una ruta inicial pertinente y más limitada; no añadas privilegios elevados hasta comprender y querer el acceso adicional.

Para practicar la creación de expresiones de búsqueda, prueba estos laboratorios:

  1. Orden find de Linux: búsqueda de archivos - Este laboratorio presenta la orden find, una herramienta versátil para buscar y localizar archivos y directorios según distintos criterios. Practicarás cómo localizar archivos concretos con find.
  2. Descubrir recursos críticos del sistema - Aprende órdenes esenciales de Linux para localizar archivos y ejecutables, incluida find. Practicarás cómo recorrer con eficiencia el sistema de archivos y descubrir recursos críticos del sistema.

Lección completada

Has completado find

Ahora puedes construir expresiones de find bien delimitadas y verificar los resultados antes de actuar.

  • Elegir la ruta inicial útil más limitada.

  • Entrecomillar patrones de nombre y combinarlos con pruebas de tipo.

  • Filtrar por tamaño o por periodos completos de modificación de 24 horas.

  • Limitar la profundidad de recursión cuando convenga.

  • Mostrar y revisar las coincidencias antes de realizar acciones destructivas.

Guarda tu progreso

Crea una cuenta gratuita para guardar esta lección y continuar en cualquier dispositivo.

Crear una cuenta gratuita
Siguiente Lección
Volver a Línea de Comandos