🔎 Buscar ficheros con find en Linux (tamaño, nombre y fecha)

Shared post

Cuando el disco se llena o no sabes dónde quedó un log, find es más potente que buscar a mano por carpetas.

Más allá del comando suelto, lo importante es el contexto: cuándo aplicarlo, cómo validar el resultado y qué efectos secundarios puede tener en producción.

A continuación verás el porqué, ejemplos concretos con explicación, un flujo paso a paso, errores típicos y buenas prácticas para usarlo con confianza.

💡 Para qué usarlo

  • Encontrar ficheros enormes que llenan el disco
  • Limpiar temporales antiguos
  • Localizar configs por nombre en todo el árbol
  • Tener un procedimiento repetible reduce el tiempo de incidente
  • Documentar el enfoque ayuda al resto del equipo a operar igual de bien

🚀 Comandos y ejemplos

Por nombre:

find /etc -name "*.conf"

Adapta este ejemplo a tus paths y nombres reales antes de usarlo en producción.

Mayores de 100MB:

find /var -type f -size +100M -ls

Adapta este ejemplo a tus paths y nombres reales antes de usarlo en producción.

Modificados hace más de 30 días:

find /tmp -type f -mtime +30

Adapta este ejemplo a tus paths y nombres reales antes de usarlo en producción.

Borrar con cuidado (dry-run mental):

find /var/log -name "*.gz" -mtime +90 -print

Revisa la lista antes de añadir -delete.

Buscar por usuario dueño:

find /home -user deploy -type f

Útil tras migraciones o para localizar restos de un usuario.

Ejecutar comando sobre resultados:

find /var/log -name "*.log" -mtime +60 -print

Lista primero. Solo cuando la lista sea correcta considera -delete o -exec.

🔧 Ejemplo práctico paso a paso

1. Confirma que es espacio en disco (o inodos)

Alerta típica: disco al 95%. Primero df -h y df -i. Si los inodos están al 100%, buscar ficheros enormes no basta: habrá millones de ficheros pequeños.

2. Localiza el directorio pesado

sudo du -xh /var --max-depth=2 | sort -h | tail -20

Supongamos que /var/log destaca. Ahí concentrarás el find.

3. Lista candidatos antes de borrar

sudo find /var/log -type f -name '*.gz' -mtime +30 -ls | head -50

Revisa rutas: no quiero borrar un .gz que aún necesitas para auditoría.

4. Borra solo el conjunto validado

sudo find /var/log -type f -name '*.gz' -mtime +30 -delete
df -h /

Vuelve a mirar df. Si no bajó, el peso estaba en otro path (docker, journal, backups).

⚠️ Errores frecuentes

find / … -delete sin print previo. Un path mal escrito puede borrar configs. Siempre lista con -ls/-print y revisa.

Ignorar df -i. Disco “lleno” por inodos no se arregla borrando un ISO de 4GB; hay que eliminar muchos ficheros pequeños.

Buscar en / mientras el servidor está en pico. find sobre todo el árbol dispara I/O. Limita a /var, /home o el mount problemático.

💡 Buenas prácticas

  1. Empieza con -print antes de borrar.
  2. Limita el path de búsqueda; evita find / en producción sin filtro.
  3. Combina con xargs solo cuando entiendas el riesgo.
  4. Prefiere cambios reversibles y con rollback claro.
  5. Corrrelaciona siempre con logs y, si puedes, con una métrica simple.
  6. Si el procedimiento se repite, conviértelo en script versionado.

📝 Conclusión

Un buen find te ahorra horas de navegación y te ayuda a mantener discos bajo control.

Si practicas este flujo con calma en staging, en producción te saldrá casi automático. Guarda tus variantes locales (paths, unidades, convenciones del equipo) junto a estos ejemplos.


Shared post