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
|