Logo

Tutoriales UBMI IFC

Recursos para la comunidad

header

find programa para buscar archivos en línea de comandos.

find es un programa que encontrarás en todos los sistemas GNU/Linux. Es útil para encontrar archivos en el árbol de directorios y tiene muchas opciones.

Buscar un archivo por nombre.

Buscar archivos usando el nombre exacto del archivo.

Para buscar un archivo por nombre en el árbol de directorios de la carpeta actual (.)se puede usar el siguiente comando:

find . -name archivo.txt 

En algunos sistemas es necesario agregar la expresión -print al final del comando para visualizar correctamente el nombre de los archivos encontrados.

Por otro lado, recuerda que puede ejecutar este comando a cualquier directorio del árbol de directorios si sustituyes el . por cualquier path válido.

Buscar archivos con un nombre aproximado.

En ocasiones, no conocemos (o no nos acordamos :P) el nombre exacto de un archivo. Por lo que find acepta el uso de expresiones regulares.

Por ejemplo, para encontrar todos los archivos que terminan en .py:

find . -name "*.py"

Buscar archivos por fecha de modificación.

Buscar archivos que se modificaron recientemente.

A veces necesitamos encontrar únicamente archivos que fueron modificados recientemente.

Por ejemplo, para encontrar todos los archivos que modificamos en la última semana:

find . -newermt "1 week ago"

Buscar archivos recietnes a partir de una fecha.

find . -newermt "2022-12-31"

Buscar directorios.

find también es útil para trabajar sólo con directorios.

Buscar todos los directorios de la carpeta actual.

El siguiente comando permite obtener una lista recursiva de todos los directorios presentes en la carpeta actual (.).

find . -type d

Buscar directorios por nombre.

El siguiente comando te permite encontrar la carpeta que se llama prueba.

find . -type d -iname "prueba"

La opción -iname también acepta wildcards y expresiones regulares.

Ejecutar comandos a los archivos encontrados.

Una de las características más útiles de find es la capacidad de ejecutar algún comando a los archivos encontrados. Por ejemplo, el siguiente comando cuenta el número de líneas de todos los archivos *.txt encontrados en el directorio actual.

find . -name "*.txt" -exec wc -l {} \;

En el comando anterior:

Otra manera de lograr resultados similares es utilizar xargs .

find . -name "*.txt" | xargs wc -l

En el supuesto de que necesitemos especificar la posición del argumento en el comando que se intenta ejecutar; por ejemplo en cp dónde la sintaxis es cp archivo_origen archivo_destino se puede utilizar xargs con la opción -I y un caracter que será reemplazado durante la ejecución del comando ( en este ejemplo será el caracter ‘%’ ).

find . -name "*.txt" | xargs - I % cp % /path/destino

Notas finales

find es un programa muy poderoso que te permite encontrar archivos y directorios en función de su tamaño, fecha de modificación, entre otras opciones. Anímate a aprender más. Recuerda que puedes usar el comando tldr para encontrar guías rápidas.

header