find
El comando find permite buscar archivos y directorios dentro del sistema de archivos utilizando distintos criterios, como el nombre, el tipo, el tamaño, la fecha de modificación o los permisos. Es una de las herramientas más potentes de Linux para localizar información.
| Categoría | Archivos y directorios |
|---|---|
| Disponible en | Linux, macOS y otros sistemas Unix |
| Equivalente en Windows | where (búsqueda sencilla) o dir /s |
| ¿Requiere permisos de administrador? | No, aunque solo podrá buscar en los directorios sobre los que tenga permisos de lectura. |
¿Qué significa su nombre?
find significa encontrar o buscar en inglés.
El nombre describe perfectamente su función: localizar archivos o directorios que cumplan unas determinadas condiciones.
¿Para qué sirve?
Permite buscar archivos y directorios dentro de una ruta determinada.
La búsqueda puede realizarse utilizando numerosos criterios, como el nombre, la extensión, el tamaño, la fecha de modificación, el propietario o los permisos.
Sintaxis
find ruta [criterios] [acciones]
Opciones y criterios más utilizados
| Comando | Descripción |
|---|---|
find . -name "*.txt" |
Busca archivos con extensión .txt. |
find /home -name informe.pdf |
Busca un archivo concreto. |
find . -type f |
Busca únicamente archivos. |
find . -type d |
Busca únicamente directorios. |
find . -size +100M |
Busca archivos mayores de 100 MB. |
find . -mtime -7 |
Archivos modificados en los últimos siete días. |
find . -empty |
Busca archivos o directorios vacíos. |
find . -exec comando {} \; |
Ejecuta un comando sobre cada resultado. |
Equivalencia con otros sistemas
| Linux | Windows |
|---|---|
find . -name "*.txt" |
where *.txt |
find / -name hosts |
dir hosts /s |
Ejemplos de uso
Buscar un archivo por su nombre
find /home -name apuntes.pdf
Buscar todos los archivos PDF
find . -name "*.pdf"
Buscar directorios
find . -type d
Buscar archivos grandes
find / -size +1G
Buscar archivos modificados hoy
find . -mtime -1
Eliminar automáticamente archivos temporales
find . -name "*.tmp" -exec rm {} \;
Ejemplo de salida
$ find . -name "*.txt"
./tema1/apuntes.txt
./tema2/ejercicios.txt
./practicas/notas.txt
¿Cómo interpretar la salida?
Cada línea corresponde a un archivo o directorio encontrado.
La ruta mostrada es relativa al directorio desde el que se ejecutó el comando, salvo que se indique una ruta absoluta.
Errores habituales
- Olvidar escribir el nombre entre comillas cuando se utilizan comodines (
"*.txt"). - Buscar desde el directorio raíz (
/) sin necesidad, haciendo la búsqueda mucho más lenta. - No disponer de permisos para acceder a determinados directorios.
- Utilizar
-exec rmsin comprobar previamente los resultados.
Conceptos relacionados
- Ruta absoluta
- Ruta relativa
- Comodines
- Permisos
- Expresiones regulares
Comandos relacionados
| Comando | Relación |
|---|---|
locate |
Realiza búsquedas mucho más rápidas utilizando una base de datos. |
which |
Busca la ubicación de un ejecutable. |
whereis |
Localiza ejecutables, código fuente y páginas del manual. |
grep |
Busca texto dentro de archivos. |
ls |
Lista el contenido de un directorio. |
Comandos que suelen confundirse
| Comando | Diferencia |
|---|---|
find |
Busca archivos recorriendo el sistema de archivos. |
locate |
Busca utilizando una base de datos previamente indexada. |
grep |
Busca texto dentro del contenido de los archivos. |
which |
Localiza la ruta de un programa ejecutable. |
Expresiones habituales
| Expresión | Significado |
|---|---|
-name "*.txt" |
Buscar por nombre. |
-type f |
Solo archivos. |
-type d |
Solo directorios. |
-size +100M |
Archivos mayores de 100 MB. |
-mtime -7 |
Modificados hace menos de siete días. |
-exec |
Ejecutar un comando sobre cada resultado. |
Uso habitual en administración de sistemas
find /var/log -name "*.log"
find /home -size +500M
find / -perm -4000
find /tmp -empty
find . -name "*.bak"
Curiosidades
find puede combinarse con prácticamente cualquier otro comando mediante -exec o tuberías (|), convirtiéndose en una herramienta extremadamente potente para automatizar tareas de administración.
Prácticas propuestas
- Busca todos los archivos con extensión
.txtdentro de tu directorio personal. - Localiza todos los directorios existentes dentro de
Documentos. - Busca archivos mayores de 10 MB.
- Encuentra los archivos modificados durante la última semana.
- Busca todos los archivos vacíos del sistema.
- Utiliza
findjunto conrmpara eliminar archivos temporales de una carpeta de pruebas (nunca sobre datos importantes).
Consejo: Antes de utilizar -exec rm o cualquier otra acción que modifique archivos, ejecuta primero el comando find sin -exec para comprobar que los resultados son los esperados.