Universidad autónoma de baja california
facultad de ingeniería
Taller de UNIX


Practica #20 Comando find

Objetivo:

Utilizar el comando find de UNIX realizar operaciones sobre archivos.

Desarrollo:

El comando find tiene como proposito buscar archivos. Pero además de buscar archivos tiene la posibilidad de realizar operaciones con o sobre los archivos que encuentra.

Su sintaxis básica es la siguiente:
find camino expresión
Donde el parametro camino indica la ruta o subdirectorio desde donde se deberá iniciar la búsqueda. Mientras que el parametro expresión indica distintas cosas como la especificación del archivo que se busca así como la operación que se deberá realicer con el archivo una vez encontrado.

Aunque la sintaxis de find se ve sencilla, en realidad se pueden utilizar una gran variedad de opciones como se puede constatar en la página de ayuda en línea correspondiente.

A continuación veremos una serie de ejemplos sencillos que nos facilitarán la comprensión de find.


Ejemplo 1:
	
[curlango@mylap curlango]$ find /etc -name passwd -print
find: /etc/skel/tmp: Permission denied
/etc/passwd
find: /etc/default: Permission denied
/etc/pam.d/passwd
find: /etc/cups/certs: Permission denied
find: /etc/cups/ssl: Permission denied
find: /etc/webmin: Permission denied
find: /etc/shorewall: Permission denied
[curlango@mylap curlango]$

En este caso, el parametro /etc es el camino or ruta desde la cual se iniciará la búsqueda. Mientras que el siguiente parametro, que consiste de varias partes indica primeramente que la búsqueda se realizará por nombre de archivo (-name passwd) y que el archivo deseado se llama passwd. Por último se indica lo que se debe hacer al encontrar el archivo que es mostrar su nombre (-print).

El listado resultante indica que encontró dos archivos con este nombre. Tambien se ven 6 mensajes de error que marcó el sistema operativo debido a que no se tiene permiso para visualizar el contenido de dichos directorios o archivos.


Ejemplo 2:

[curlango@mylap curlango]$ find /etc -name passwd -print 2> /dev/null
/etc/passwd
/etc/pam.d/passwd
[curlango@mylap curlango]$

En este segundo caso, se suprimen los mensajes de error redireccionando éstos al dispositivo /dev/null por medio del operador 2>. De esta forma se imprimen solo los nombre de los archivos encontrados y no los errores que se van generando durante la búsqueda.
Como se mencionó, find tiene muchas opciones en cuanto a sus parametros y se debe consultar la ayuda para obtener información sobre todos ellos. Sin embargo vale la pena mencionar algunos de ellos tanto para conocer su funcionamiento como para comprender la forma en que se especifican sus parametros. La siguiente tabla muestra algunas de los parametros que pueden usarse:

Opción Funcionamiento
-user nombre Se buscarán los archivos cuyo usuario sea nombre. Ejemplo:
find / -name unix100 -print 2> /dev/null
-group grupo Se buscarán los archivos cuyo grupo sea grupo. Ejemplo:
find / -group unix100 -print 2> /dev/null
-size tamaño



-size -tamaño



-size +tamaño
Selecciona archivos cuyo tamaño es exactamente el número especificado. Se puede agregar una de las letras [bckw] para indicar que el número representa bloques, bytes, kilobytes, o palabras de 2 bytes, respectivamente.
Ejemplo:
find /bin -size 20c -print 2> /dev/null

Selecciona archivos cuyo tamaño es menor que el número especificado.
Ejemplo:
find /bin -size -20c -print 2> /dev/null

Selecciona archivos cuyo tamaño es mayor que el número especificado.
Ejemplo:
find /bin -size +20c -print 2> /dev/null
-type tipo Se buscarán los archivos cuyo tipo sea tipo, donde algunos de los valores para este pueden ser d para directorios, f para archivos normales, o l para enlaces. Ejemplo:
find /bin -type d -print 2> /dev/null

Como se mencionó anteriormente, find nos permite no solo encontrar archivos sino realizar operaciones con ellos. Para esto, se debe seguir exactamente la notación que se indica a continuació:
Se utiliza el parametro -exec seguido de un espacio y el comando a realizar sobre cada archivo que se encuentre y después {} \;.


Ejemplo 3:
[curlango@yaqui curlango]$ find /etc  -name "*wd" -exec cat {} \;

En este ejemplo se buscan todos los archivos cuyo nombre termina con *wd en el directorio /etc y muestra el contenido de cada uno de ellos.

Ejercicios:

Para cada ejercicio, escribir el o los comandos y los parámetros que requiere éste para realizar la tarea descrita.
  1. Qué archivos hay en el directorio /tmp en el servidor yaqui que pertenezcan a miembros del grupo maestros?
  2. Cuantos fueron los archivos que se encontraron el la pregunta anterior? Utiliza redireccionamiento para mostrar este número en la pantalla.
  3. Cuales archivos en tu cuenta son de tamaño igual a 300 bytes?
  4. Cuales archivos en tu cuenta son de tamaño menor a 300 bytes?
  5. Cuales archivos en tu cuenta son de tamaño mayor a 300 bytes?
  6. Consulta el manual de find para determinar como mostrar los nombres de los archivos que tienes en tu cuenta que se modificaron en los últimos 30 dias.
  7. Consulta el manual de find para determinar como mostrar los nombres de los archivos que tienes en tu cuenta que se modificaron hace mas de 15 dias.
  8. Consulta el manual de find para determinar como mostrar los nombres de los archivos que tienes en tu cuenta que se modificaron hace de 5 dias.
  9. Muestra el contenido de los archivos que tengas en cuyo tamaño sea mayor a 30 bytes.
  10. Muestra el nombre de todos los archivos que tienes en tu cuenta cuyo nombre termine con el símbolo ~. Si no tienes ninguno, crea 4 y vuelve a hacer el ejercicio. (Nota: Los archivos de respaldo que crea vi tienen esta terminación.)
  11. Muestra el contenido de los archivos que encontraste en el paso anterior mostrando una pantalla de información a la vez.
  12. Crea un directorio que se llame para_borrar y copia los archivos que se mostraron en el paso anterior.
  13. Utiliza find para borrar los archivos del directorio que se creo en el paso anterior.
  14. Explica para que sirven los parametros -amin y -used .
  15. Da un ejemplo del uso de los parametros del ejercicio anterior.

Práctica Elaborada por: M.C. Cecilia Curlango Rosas Fecha: 06/05/03