Construye un comando find sin memorizar flags
El comando find de Linux es lo más útil de un shell y lo más doloroso de recordar. "¿Era -mtime -7 o +7? ¿-size +100M significa mayor o menor? ¿Cómo borro resultados con seguridad?". Cada vez que lo necesitas acabas googleando la misma respuesta de Stack Overflow de 2012.
Este generador es lo contrario. Pulsas lo que quieres (ruta, patrón de nombre, tipo de archivo, tamaño, fecha de modificación, acción) y el comando aparece a la derecha, listo para copiar. Sin ejecución, sin riesgo: es un generador, no un ejecutor. El comando se ejecuta solo cuando lo pegas en tu terminal, donde puedes leerlo primero.
Lo que puedes construir:
- buscar una carpeta por glob (`*.log`, `*.tmp`), nombre, ruta o regex
- filtrar por tipo (archivo, directorio, symlink, dispositivo de bloque)
- filtrar por tamaño (`-size +100M` = mayor que 100 megabytes)
- filtrar por tiempo (`-mtime -7` = modificado en los últimos 7 días)
- filtrar por propietario, grupo, permisos, vacío / ejecutable / legible / escribible
- elegir una acción: imprimir, imprimir con terminador nulo para `xargs -0`, borrar, ejecutar un comando por coincidencia o agruparlas en uno
La vista previa también muestra una salida de muestra simulada para que veas qué encontraría el comando antes de ejecutarlo con datos reales.
Cómo se usa
- Escribe la ruta de inicio en "Dónde buscar". Por defecto es . (la carpeta actual). Usa /var/log para logs del sistema, ~/Downloads para tu carpeta de descargas o / para el sistema entero (lento, suele requerir root).
- Activa la sección que necesites (cada panel tiene su interruptor). No tienes que rellenar todas las secciones, solo las que importen para la búsqueda.
- Elige un patrón de nombre: escribe algo como `*.log` y elige el modo. \-name es el más común (glob sensible a mayúsculas). \-iname ignora mayúsculas. \-path compara la ruta completa incluyendo carpetas. \-regex compara con una expresión regular.
- Elige un tipo de archivo con la barra de chips: archivo, directorio, symlink. Puedes seleccionar varios tipos a la vez (find los trata como OR).
- Define el filtro de tamaño. Comparación: = exacto, > mayor que, < menor que. Elige unidad: c (bytes), k (kilobytes), M (megabytes), G (gigabytes). Ejemplo: `-size +100M` encuentra archivos mayores de 100 megabytes.
- Define el filtro de tiempo. Elige modificado (\-mtime), accedido (\-atime) o cambiado (\-ctime), luego elige unidad (minutos / horas / días) y un número. \-mtime -7 significa "modificado en los últimos 7 días".
- Elige una acción: \-print (predeterminado, imprime rutas), \-print0 (terminada en nulo, para canalizar a `xargs -0`), \-delete (borra coincidencias, peligroso, se muestra un aviso rojo grande) o \-exec ... \; para ejecutar un comando por coincidencia. Usa {} como placeholder de cada ruta encontrada.
- Copia el comando del panel de vista previa a la derecha. Abre tu terminal, pega, lee qué hace y luego pulsa Enter. El generador nunca ejecuta nada.
Cuándo te resulta útil
Seis sitios en los que recurres a find y no quieres volver a memorizar flags:
- Limpiar logs viejos. Tu disco está lleno y `/var/log` es sospechoso. Quieres todo lo de más de 90 días que termine en .log: `find /var/log -type f -name "*.log" -mtime +90 -delete`. El generador lo produce en 4 clics; léelo primero para asegurarte de no haber escrito -mtime -90 por error.
- Encontrar archivos enormes que se comen el disco. `df` dice que la unidad está al 90 % pero no sabes qué carpeta es la culpable. Pides todos los archivos mayores de 1 GB en el sistema: `find / -type f -size +1G`. Ordenas por tamaño y atacas los peores.
- Listar qué ha cambiado hoy. Has ejecutado un instalador o un script de build y quieres saber qué archivos tocó. `find / -type f -mtime -1` lista todo lo modificado en las últimas 24 h. Útil para depurar, auditar seguridad y averiguar "de dónde salió esta config".
- Renombrar o procesar archivos en lote. Quieres convertir cada imagen .heic a .jpg: `find ~/Photos -name "*.heic" -print0 | xargs -0 -I {} convert {} {}.jpg`. La combinación \-print0 + `xargs -0` es la forma segura: maneja nombres con espacios, comillas y unicode sin romperse.
- Limpiar directorios vacíos. Tras una gran mudanza quedan carpetas vacías. `find . -type d -empty -delete` las elimina de una vez. El generador te muestra el comando exacto antes de ejecutarlo.
- Encontrar archivos con permisos erróneos. Tu servidor web da 403 porque algunos archivos no son legibles por "otros". `find /var/www -type f ! -perm -044` lista archivos donde "others" no puede leer. Arréglalos con un `chmod` posterior.