Comando find

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 rm sin 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

  1. Busca todos los archivos con extensión .txt dentro de tu directorio personal.
  2. Localiza todos los directorios existentes dentro de Documentos.
  3. Busca archivos mayores de 10 MB.
  4. Encuentra los archivos modificados durante la última semana.
  5. Busca todos los archivos vacíos del sistema.
  6. Utiliza find junto con rm para 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.