Comando find


lupa.jpg

En Linux podemos hacer búsquedas de archivos de varias manera. Por ejemplo, desde Nautilus (el navegador de archivos de Gnome) podemos buscar en el directorio actual todos los archivos mp3’s con esta expresión ‘*.mp3’. Pero cuando necesitamos hacer búsquedas más completas,  por ejemplo todos los archivos mp3s mayores a 5 MB, Nautilus no es lo más adecuado. Para estos casos tendremos que usar un comando de consola muy versátil y poderoso: find

Comando find

El comando find permite realizar búsquedas de archivos y directorios en el sistema según una expresión dada. El formato básico es

find ruta expresión

Donde expresión está compuesto de opciones (modificación del comportamiento de find en general), pruebas (cosas que devuelven verdadero o falso) y acciones (que ejecuta procesamiento sobre los archivos y directorios.

Veamos algunas opciones, pruebas y acciones…

Opciones

-maxdepth n Desciende hasta n niveles.
-mount No realizar búsquedas en otros sistemas de archivos.

Pruebas (Tests)

n Exactamente n
+n Mayor que n
-n Menor que n
-amin n Archivos que fueron accedidos hace n minutos
-anewer archivo Archivos que fueron accedidos mas recientemente que la última modificación de archivo
-atime n Archivos que fueron accedidos hace n*24 horas
-cmin n Archivos cuyo estado hayan sido modificado hace n minutos
-cnewer archivo Archivos cuyo estado hayan sido modificado mas recientemente que la última modificación de archivo
-ctime n Archivos cuyo estado hayan sido modificado hace n*24 horas
-mmin n Archivos que fueron modificados hace n minutos
-newer archivo Archivos que fueron modificados mas recientemente que la última modificación de archivo
-mtime n Archivos que fueron modificados hace n*24 horas
-empty Archivos o directorios vacíos
-executables Archivos ejecutables y directorios navegables
-readable Archivos que se pueden leer
-fstype tipo Archivos en sistemas de archivos tipo (ejemplo vfat)
-uid n Archivos cuyo identificador de usuario es n
-user usuario Archivos pertenecientes a usuario
-gid n Archivos cuyo identificador de grupo es n
-group grupo Archivos pertenecientes a grupo
-name patrón Archivos cuyo nombre coincida con el patrón dado. El patrón acepta los metacaracteres (‘*’, ‘?’, y ‘[]’)
-nogroup Archivos que no le pertenezcan a ningún grupo
-nouser Archivos que no le pertenezcan a ningún usuario
-perm modo Los permisos del archivo son exactamente a modo. Se puede usar la superfetación octal o la de letras (-perm g=w)
-perm -modo Los permisos del archivo contienen a modo.
-perm /modo Cualquiera de los permisos en modo está activado en el archivo
-size n[cwbkMG] Archivos de tamaño n.
-type c Archivos tipo c (bloque, carácter, directorio, enlace simbólico, regular, etc.

Acciones

-delete Eliminar archivos
-exec comando ; Ejecutar comando
-exec comando ‘{}’ \; Ejecutar comando sobre los archivos especificados

Ejemplos

find /home -name ‘*.bash*’ Cualquier archivo que contenga .bash en su nombre
find $HOME -mtime 0 Archivos en su directorio home que hayan sido modificados las últimas 24horas
find -perm 644 Exactamente 644
find -perm -644 Trae 644 y 777, por ejemplo
find -perm /222 Cualquier archivo con el bit de escritura activo
find -perm /u=w Archivos con el bit de escritura activo para el usuario
find /home -nouser -exec rm -r ‘{ }’ \; Borrar los archivos del /home que no tengan un usuario definido en el /etc/passwd
find /home -size +1G Archivos mayores a 1 GB en /home
find / -size +1G -user lgallard Archivos mayores a 1 GB en el sistema que le pertenezcan al usuario lgallard

Referencias


,

  1. #1 by Luis Gallardo on 27/03/2010 - 7:24

    @antonio Buscar todos los archivos en el directorio actual, sin importar que tenga mayúsculas o minúsculas (un poco sin sentido, ya que usas el comodín *)

  2. #2 by antonio on 27/03/2010 - 5:41

    ¿que hace el comando find . iname *?

Los Comentarios están cerrados