Google
Web dns.bdat.net

find Localiza ficheros

La orden find se utiliza para localizar ficheros contenidos en los distintos discos del sistema. Esta orden dispone de muchas opciones por lo que es conveniente consultar la página del manual

Uso:

find [ruta] [expresión]

ruta indica un directorio donde comenzamos la búsqueda.

Entre las opciones disponibles de find podemos citar:

Opción

Significado

Opción

Significado

-type tipo

tipo puede ser b, c d o f para referirnos a dispositivos de bloque (b), carácter (c), directorio (d) o fichero regular (f).

-exec orden

ejecuta una orden para cada fichero encontrado.

-user usuario

busca ficheros propiedad del usuario.

-group grupo

igual que user pero para el grupo.

-regex expreg

Ficheros que verifiquen la expresión regular indicada.

-depth

Procesa antes el contenido de un directorio antes que el propio directorio.

-maxdepth nivel

Indica el número de directorios que desciende en la búsqueda.

-mindepth nivel

No aplica acciones en niveles inferiores al indicado

-empty

Fichero o directorio vacío

-mount o

-xdev

Sólo un sistema de ficheros

-newer fich

Fichero modificado con posterioridad al fichero indicado.

-perm modo

Busca elementos con esos permisos. Los permisos se considera desde un cero. Si modo va prrecedido de - se exigen todos lso permisos. Si va prpecedidio de un + entonces se exije alguno.

-name expr

indica el nombre de fichero que queremos buscar. Puede ser un nombre fijo o una plantilla formada por * y ?, en este último caso, la plantilla deberá estar comprendida entre comillas dobles para evitar que la shell las interprete antes de llamar a la orden find

-uid n

Ficheros con uid n

-user user

Ficheros propiedad de user

-gid n

Ficheros con gid n

-group grp

Ficheros del grupo grp

-nouser

Ficheos sin usuario

-nogroup

Ficheros sin grupo

-amin n

Accedico hace n minutos

-a newer fic

Último acceso posterior a fic

-atime n

Accedico hace 24*n horas

-cmin n

Cambio estado hace n minutos

-cnewer file

Cambio estado posterior a file

-ctime n

Cambio estado hace 24*n horas

-mtime n

Contenido modificado hace 24*n horas

-used n

Último acceso hace n días

( )

Subexpresión

! ( ) -not ( )

Niega la subexpresión

expr1 -a expr2

Las dos expresiones se verifican (and)

expr1 -o expr2

Se verifica una de las dos

Los valores numéricos se pueden especificar como:

+n mayor que n

-n menor que n

n igual a n

La orden find es muy útil para localizar ficheros con características muy concretas, por ejemplo todo tipo de permisos (opción -perm) modificados en los últimos días (-mtime), accedidos en los últimos días (-atime) etc. Es muy útil sobre todo en aspectos de seguridad del sistema.

Ejemplos de uso:

Borrar todos los ficheros terminados en ??? del directorio activo:

find . -name ?*~? -type f -exec rm {} \;
            

Buscar todos los ficheros del directorio activo modificados con posterioridad al fichero datos.txt:

find . -type f -newer datos.txt
            

Buscar todos los ficheros llamados .profile que haya a partir del directorio activo:

$ find . -name .profile

Borrar todos los ficheros llamados core:

$ find / -name core -type f -exec rm {} \;
            

Buscar todos los ficheros propiedad de root o de pepe

$ find /tmp  \(-user root -o -user pepe \)
            

Buscar todos los ficheros que empiecen por print

$ find / -name "print*"
            

Buscar en el directorio /var todos los directorios más recientes que /etc/passwd

$find /var  -type d -newer /etc/passwd