Cuando sabes que un archivo existe en algún lugar de un servidor, pero no sabes dónde, la tentación suele ser buscar carpeta por carpeta. Mala idea. En Linux, encontrar Está diseñado para esto: buscar por nombre, tipo, tamaño, fecha, derechos, y actuar solo cuando el resultado sea claro.
Te recomiendo usarlo con prudencia, sobre todo en un servidor de producción. Un comando `find` ejecutado como usuario root puede escanear muchísimos archivos, mostrar errores de permisos y sobrecargar el disco innecesariamente. La idea no es escribir el comando más amplio posible, sino acotar rápidamente el área de búsqueda.

Empieza por buscar en el lugar correcto.
El formulario básico es sencillo: se especifica una carpeta de inicio y, a continuación, un criterio de búsqueda.
encontrar /etc -nombre "ssh_config"
Aquí, Linux está buscando un archivo llamado ssh_config En /etc y sus subcarpetas. Si ya sabes que el archivo debería estar en una ubicación específica, empieza desde ahí. Es más rápido, más legible y evitas escanear todo el sistema innecesariamente.
Para ignorar la distinción entre mayúsculas y minúsculas, utilice -iname :
encontrar /var/www -iname "*.conf"
Si empiezas desde la raíz, es de esperar que veas mensajes. Permiso denegadoEsto no es necesariamente un problema. Puedes ocultarlos, pero no lo hagas sistemáticamente si lo que buscas específicamente es un problema de derechos.
buscar / -nombre "nginx.conf" 2>/dev/null
Limitar la búsqueda por tipo de archivo
En un servidor, un nombre puede corresponder a un archivo, una carpeta, un enlace simbólico o cualquier otra cosa. Agregar -amable para evitar resultados innecesarios.
encontrar /var/log -tipo f -nombre "*.log"
encontrar /var/www -tipo d -nombre "caché"
encontrar /usr/bin -tipo l -nombre "python*"
-tipo f apunta a archivos estándar. -tipo d carpetas de destino. -tipo l Se centra en los enlaces simbólicos. Este pequeño filtro evita gran parte del ruido en los resultados.
También puedes limitar la profundidad cuando no quieras descender demasiado en el árbol:
encontrar /var/www -maxdepth 2 -type d -name "cache"
Esto resulta muy útil en sitios web, copias de seguridad o carpetas de usuario con muchos subdirectorios.
Localiza los archivos grandes antes de borrar nada.
Cuando un servidor se está quedando sin espacio en disco, la función `find` puede ayudar a localizar archivos grandes. Empiece por listarlos, no por eliminarlos.
encontrar /var -tipo f -tamaño +100M -imprimir
encontrar /home -tipo f -tamaño +1G -imprimir
Para mostrar los tamaños de forma legible, puede ejecutar ls -lh en cada resultado:
encontrar /var -tipo f -tamaño +100M -ejecutar ls -lh {} +
Si tu objetivo es liberar espacio, no vayas directamente a habitaciónPrimero, compruebe lo que ha encontrado, especialmente en /var/lib, /var/registro o carpetas de aplicaciones. Un archivo de base de datos o caché puede requerir un método de purga específico.
Para un enfoque más completo del tema, puede complementarlo con la guía sobre Comandos para usar cuando el espacio en disco de Linux está lleno..
Buscar por fecha de modificación
Para saber qué ha cambiado recientemente, las opciones de fecha son muy útiles. Por ejemplo, archivos modificados en los últimos 7 días:
encontrar /etc -tipo f -mtime -7
Archivos modificados hace más de 30 días:
encontrar /var/log -tipo f -mtime +30
-mtime Trabaja en días. Para una búsqueda más precisa, consulte también -mmín, que funciona en minutos:
encontrar /tmp -tipo f -mmin -60
Esto resulta útil después de un cambio de configuración, una actualización o un script que generó archivos sin indicar claramente su ubicación.
Filtrar por derechos sin infringir permisos
Find también puede realizar búsquedas basadas en permisos. Por ejemplo, para encontrar scripts ejecutables en una carpeta:
encontrar /usr/local/bin -tipo f -permiso /111
Para identificar archivos que son demasiado accesibles, puedes buscar archivos que sean editables por todos:
encontrar /var/www -tipo f -permiso -002 -ejecutar ls -lh {};
No corrija una lista de resultados con un chmod global sin comprender el contexto. Los permisos de Linux pueden provocar rápidamente fallos en las aplicaciones. Si necesita revisar este punto, el artículo sobre chmod recursivo en Linux Explica precisamente por qué debemos mantenernos cautelosos.
Usar -exec sin provocar una catástrofe
-ejecutivo Te permite ejecutar un comando en los archivos encontrados. Es potente, así que también es donde puedes causar más daño.
Comience siempre mostrando los resultados:
encontrar /tmp -tipo f -nombre "*.tmp" -imprimir
Solo entonces, si la lista es correcta, podrá solicitar confirmación antes de eliminarla:
encontrar /tmp -tipo f -nombre "*.tmp" -ejecutar rm -i {} +
la pareja {} representa los archivos encontrados. El + La función find agrupa varios resultados en el mismo comando cuando sea posible, lo que evita iniciar un proceso para cada archivo.
encontrar /var/log -tipo f -nombre "*.log" -ejecutar ls -lh {} +
Mi consejo es sencillo: no borres nada automáticamente hasta que hayas revisado la lista. En un servidor, ahorrar un segundo no justifica restaurar desde una copia de seguridad.
Un método rápido antes de lanzar Find en producción
- Comience con el archivo más preciso posible;
- agregar
-tipo f,-tipo dO-tipo llo antes posible; - usar
-profundidad máximasi quieres evitar una búsqueda demasiado profunda; - mostrar los resultados con
-imprimirO-exec ls -lhantes de actuar; - Deja las órdenes destructivas para el final, con confirmación si es posible.
Para obtener documentación de referencia, puede consultar el manual de GNU Findutils en encontrar y la pagina encontrar(1) de man7. Si necesita seguir los registros después de encontrar un archivo, la guía en cola en Linux Este método lo complementa bien.