find: los mejores ejemplos prácticos para localizar lo que buscas
El comando find es uno de los más importantes en el mundo *nix. En Linux se puede usar para localizar todo aquello que necesitas, como directorios y ficheros. Además, es extremadamente poderoso y flexible, ya que admite argumentos y opciones para crear prácticos filtros (fecha, tamaño, tipo, nombre, extensión,…). Incluso puede ser una práctica herramienta para auditar la seguridad de la distro, ya que también podrá localizar ficheros o directorios con permisos inapropiados.
Sin embargo, debido a esa versatilidad y cantidad de opciones, no es de los comandos que más fáciles son de recordar, y muchos usuarios siguen teniendo ciertos problemas. Por eso, aquí verás algunos ejemplos prácticos de los más prácticos para que aprendas a defenderte con find:
- Buscar un archivo o directorio por su nombre (en el directorio actual, en todos los directorios, y con sensibilidad para distinguir entre minúsculas y mayúsculas):
find . -name "ejemplo.txt" find / -name "ejemplo.txt" find . -iname "ejemplo.txt"
- Buscar un archivo o directorio por su nombre dentro de un directorio concreto:
find /home/usuario/prueba -name "ejemplo.txt"
- Buscar todos los directorios (puedes usar l para enlaces simbólicos, c para dispositivos de carácter, f para ficheros, y b para dispositivos de bloque) y evitar archivos, o usar también el nombre:
find /home/usuario/prueba -type d find /home/usuario/prueba -type d -name "ejemplo"
- Buscar archivos con una extensión particular:
find . -type f -name "*.txt"
- Buscar archivos por su nombre y eliminarlo:
find . -name "ejemplo.txt" -delete
- Buscar todos los archivos accedidos más viejos de 10 años, o también puedes hacerlo por fecha de modificación en los últimos 60 min y por fecha de cambios en menos de 1 día:
find / -atime 10 find / -mmin -60 find / -ctime -1
- Buscar los archivos que sean mayores de 500MB y menores de 1GB:
find / -size +500M -size -1G
- Buscar los archivos que superan los 10GB y eliminarlos de una sola vez:
find / -size +10G -exec rm -rfv {} \;
- Buscar los archivos que pertenezcan a un usuario o a un grupo:
find / -user nombre find / -group nombre
- Buscar los archivos que tengan unos permisos concretos:
find / -perm 644
- Buscar los archivos vacíos (si cambias f por d puedes buscar directorios vacíos):
find / -type f -empty
- Buscar los archivos ocultos (d en vez de f para directorios ocultos):
find / -type f -name ".*"
- Buscar texto dentro de ficheros:
find / -type f -name "*.txt" -exec grep 'texto-a-buscar' {} \;