Puede utilizar el comando find para buscar en un directorio y los subdirectorios
correspondientes archivos que cumplan determinados criterios. A
continuación, puede ejecutar un comando en los archivos encontrados.
Búsqueda
de archivos que se ajusten a un modelo |
 |
Aunque la sintaxis de find puede ser compleja, puede ayudarle a utilizar HP-UX
de forma más productiva. Es un comando eficaz y flexible.
No obstante, puede ejecutarse lentamente, sobre todo si se realizan búsquedas
en muchos directorios.
Supongamos que desea mostrar todos los archivos del directorio
actual y los subdirectorios pertinentes que empiecen por la letra
"d". Escriba:
find(1)
El punto (.) hace que find busque el directorio actual y sus subdirectorios. La
opción -name seguida de un nombre de archivo o un modelo de
nombre de archivo (en este caso d*) le indica a find que busque todos los nombres de archivo que coincidan
con dicho modelo. En este ejemplo, find busca todos los nombres de archivo que empiecen
por d.
Observe que d* se coloca entre comillas sencillas 'd*'. Si utiliza un modelo de nombre de archivo en
el comando find, debe colocarlo entre comillas sencillas para
que el shell lo interprete correctamente.
Búsqueda
de archivos que sean más nuevos que un archivo determinado |
 |
Supongamos que desea ver todos los archivos modificados después
de un archivo determinado. Para mostrar todos los archivos que sean
más nuevos que miarchivo en el directorio /home/luisa y los subdirectorios correspondientes, escriba:
$ find /home/luisa -newer miarchivo |
Este ejemplo se lee del modo siguiente: en el directorio /home/luisa y los subdirectorios correspondientes, buscar
todos los archivos modificados después de miarchivo. (Para determinar cuándo se ha producido
la última modificación de un archivo, utilice
el comando ll.)
Ejecución
de comandos en los archivos |
 |
Puede ejecutar comandos en los archivos encontrados con el
comando find. Supongamos que desea eliminar todos los archivos
que presenten la extensión .tmp en el directorio actual y los subdirectorios correspondientes.
Escriba:
$ find . -name '*.tmp' -exec rm {} \; |
En este ejemplo se buscan y muestran en la pantalla todos
los archivos del directorio actual y los subdirectorios correspondientes
que terminen en .tmp y, a continuación, se eliminan dichos
archivos. La opción -exec hace que el siguiente comando (rm) se ejecute. Las llaves { } indican los archivos encontrados
con el comando find. El punto y coma situado al final de la cadena exec está precedido de una antibarra (\;).
Utilización
de operadores lógicos |
 |
La sintaxis del comando find incluye los operadores lógicos booleanos NO,
Y y O.
Para buscar archivos que no se ajusten a un modelo específico,
utilice el operador lógico NO, el signo de exclamación
(!). Después de utilizar este operador,
debe utilizar opciones para definir los atributos de archivo, como el
nombre de archivo. A continuación, se buscan los archivos
que no tengan los atributos que haya especificado.
Por ejemplo, para buscar todos los archivos del directorio /tmp que no sean de luisa, utilice este comando:
$ find /tmp \( ! -user luisa \) |
La antibarra \ precede a los paréntesis para que el
shell no los interprete como caracteres especiales.
Para buscar archivos que tengan dos atributos distintos, utilice
el operador lógico Y, expresión -a expresión. Por ejemplo, para buscar todos los directorios de / que sean de luisa, utilice este comando:
$ find / \( -type d -a -user luisa \) |
Para buscar archivos que tengan cualquiera de los dos atributos
o ambos, utilice el operador lógico O, expresión -o expresión. Por ejemplo, para eliminar todos los archivos que
terminen en .o o que se llamen a.out y a los que no se haya obtenido acceso durante
una semana, utilice este comando:
$find / \( -name a.out -o -name '*.o' \) -atime +7 -exec rm {} \; |
Para
obtener más información:
Consulte la página de manual find(1)
para obtener más información sobre la utilización
del comando find.