miércoles, 4 de mayo de 2016

Tests

Digamos que queremos una lista de directorios de nuestra búsqueda. Para hacerlo, podríamos añadir el siguiente test:

[me@linuxbox ~]$ find ~ -type d | wc -l
1695

Añadiendo el test -type d delimitamos la búsqueda a directorios. En cambio, podríamos haber limitado la búsqueda a archivos normales con este test:

[me@linuxbox ~]$ find ~ -type f | wc -l
38737

Aquí tenemos los tests, de tipos de archivo, más comunes soportados por find:

Tabla 17-1: Tipos de archivo en find
Tipo de archivo
Descripción
b Archivo especial de dispositivo de bloques (Block special device)
c Archivo especial de dispositivo de caracteres (Character special device)
d Directorio
f Archivo normal
l Enlace simbólico

También podemos buscar por tamaño de archivo y nombre de archivo añadiendo algunos tests adicionales. Busquemos todos los archivos normales que coinciden con el patrón con comodín “*.JPG” y que sean mayores de un megabyte:

[me@linuxbox ~]$ find ~ -type f -name "*.JPG" -size +1M | wc -l
840

En este ejemplo, añadimos el test -name seguido del patrón con comodín. Fíjate como lo hemos incluido entre comillas para prevenir la expansión de nombre por el shell. A continuación, añadimos el test -size seguido de la cadena “+1M”. El signo más al principio indica que estamos buscando archivos mayores que el número especificado. Un signo menos al principio cambiaría el significado de la cadena para que sea menor que el número especificado. No usar signo significa, “coincidencia del valor exacto”. La letra final “M” indica que la unidad de medida es megabytes. Los siguientes caracteres pueden usarse para especificar unidades:

Tabla 17-2: Unidades de tamaño de find
Carácter
Unidad
b Bloques de 512 bytes. Es la opción por defecto si no especificamos ninguna unidad.
c Bytes
w Palabras de 2 bytes
k Kilobytes (unidades de 1024 bytes)
M Megabytes (unidades de 1048576 bytes)
G Gigabytes (unidades de 1073741824 bytes)

find soporta un gran número de tests diferentes. Abajo hay un paquete de los más comunes. Fíjate que en los casos en los que se requiere un argumento numérico, puede aplicarse la misma notación de “+” y “-” que vimos antes:

Tabla 17-3: Tests de find
Test
Descripción
-cmin n Encuentra archivos o directorios cuyo contenido o atributos han sido modificado exactamente hace n minutos. Para especificar menos que n minutos, usa -n y para especificar más de n minutos usa +n
-cnewer archivo Encuentra archivos o directorios cuyo contenido o atributos han sido modificados más recientemente que el archivo archivo.
-ctime n Encuentra archivos o directorios cuyo contenido o atributos fueron modificados por última vez hace n*24 horas.
-empty Encuentra archivos y directorios vacíos
-group nombre Encuentra archivos o directorios que pertenecen al grupo. El grupo podría expresarse tanto como un nombre de grupo o una ID numérica de grupo.
-iname patrón Como el test -name pero no diferencia entre mayúsculas y minúsculas.
-inum n Encuentra archivos con el número de inodo n. Ésto es útil para encontrar todos los enlaces duros a un inodo particular.
-mmin n Encuentra archivos o directorios cuyo contenido fue modificado por última vez hace n minutos.
-mtime n Encuentra archivos o directorios cuyo contenido fue modificado por última vez hace n*24 horas.
-name patrón Encuentra archivos o directorios con la cadena patrón.
-newer archivo Encuentra archivos y directorios cuyo contenido fue modificado más recientemente que el archivo especificado. Ésto es muy útil cuando escribimos scripts de shell que realizan copias de seguridad de archivos. Cada vez que hagas una copia de seguridad, actualiza un archivo (como un log por ejemplo) y  luego usa find para determinar qué archivos fueron cambiados desde la última actualización.
-nouser Encuentra archivos y directorios que no pertenecen a un usuario válido. Puede usarse para encontrar archivos pertenecientes a cuentas borradas o para detectar actividad de atacantes.
-nogroup Encuentra archivos y directorios que no pertenecen a un grupo válido.
-perm modo Encuentra archivos y directorios que tienen configuración de permisos en el modo especificado. modo podría expresarse tanto en octal como en notación simbólica.
-samefile nombre Igual que el test -inum. Encuentra archivos que comparten el mismo número de inodo que el archivo nombre.
-size n Encuentra archivos de tamaño n.
-type c Encuentra archivos de tipo c.
-user nombre Encuentra archivos o directorios que pertenezcan al usuario nombre. El usuario puede expresarse por un nombre de usuario o por un ID numérico de usuario.


Ésta no es una lista completa. La man page de find tiene todos los detalles.

No hay comentarios:

Publicar un comentario