find: los mejores ejemplos prácticos para localizar lo que buscas

noviembre 20, 2021 , 0 Comments

find

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' {} \;


Some say he’s half man half fish, others say he’s more of a seventy/thirty split. Either way he’s a fishy bastard.