Guía avanzada del usuario

Buscar archivos (find)

El comando find busca archivos que cumplan las condiciones que especifique el usuario, comenzando por el directorio que nombre. Por ejemplo, si quiere buscar nombres de archivos que concuerden con determinado patrón o que hayan sido modificados durante un periodo de tiempo determinado.

Al contrario que la mayoría de los comandos, las opciones de find tienen una longitud de varios caracteres, y el nombre del directorio inicial debe ir antes que éstos en la línea de comando, como se indica a continuación:

$ find directorio opciones

donde directorio es el nombre del directorio inicial y opciones representa las opciones del comando find.

Cada opción describe un criterio de selección de archivos. Un archivo debe cumplir todos los criterios para ser seleccionado. De este modo, cuántas más opciones aplique, más limitado será el campo. La opción -print indica que el usuario desea que se muestre el resultado. (Como se describirá más adelante, puede utilizar find para ejecutar comandos; en ese caso, deberá ordenarle a find que omita la visualización de los archivos seleccionados.)

La opción -name nombre_de_archivo le indica a find que seleccione archivos que concuerden con nombre_de_archivo. Aquí, nombre_de_archivo se considera como el componente que se encuentra más a la derecha del nombre de ruta de acceso completo de un archivo. Por ejemplo, el componente situado más a la derecha de /usr/lib/calendar sería calendar. A esta parte del nombre de un archivo se la denomina a menudo nombre base.

Por ejemplo, para ver que archivos del directorio en uso y sus subdirectorios terminan en s, escriba:

$ find . -name '*s' -print
./programs
./programs/graphics
./programs/graphics/gks
./src/gks
$

Otras opciones incluyen:

-name nombre_de_archivo

Selecciona archivos cuyo elemento situado más a la derecha concuerda con nombre_de_archivo. Escriba nombre_de_archivo entre comillas si éste incluye patrones de sustitución de nombre de archivo.

-user id_usuario

Selecciona archivos pertenecientes a id_usuario. id_usuario pude ser un nombre de entrada o un número de identificación de usuario.

-group grupo

Selecciona archivos pertenecientes a group.

-m time n

Selecciona archivos que han sido modificados hace n días.

-newer checkfile

Selecciona archivos que han sido modificados más recientemente que checkfile.

Puede especificar un orden de preferencia, combinando opciones entre paréntesis (precedidos por una barra inclinada), (por ejemplo,\(options\) ). Dentro de este tipo de paréntesis se puede usar el indicador -o entre las opciones para indicar que find seleccione los archivos que cumplan esta categoría, en vez de aquellos que cumplan ambas.:

$ find . \( -name AAA -o -name BBB \) -print
./AAA
./BBB

Puede invertir el sentido de una opción situando delante de ella un signo de admiración precedido por una barra inclinada. Entonces, find seleccionará archivos a los que no afecte dicha opción:

$ find . \!-name BBB -print
./AAA

También puede usar find para aplicar comandos a los archivos que éste seleccione con la opción:

-exec command '{}' \;

Dicha opción termina con un punto y coma precedido por una barra inclinada (\;). Las llaves entre comillas se reemplazan por los nombres de archivo que find selecciona.

Como ejemplo, puede usar find para eliminar automáticamente archivos de trabajo temporales. Si nombra coherentemente sus archivos temporales, puede utilizar find para buscarlos y destruirlos siempre que le estorben. Por ejemplo, si llama a sus archivos temporales junk o dummy, el comando los encontrará y eliminará

$ find . \( -name junk -o -name dummy \) -exec rm '{}' \;

Si desea más información sobre el comando find(1), consulte man Pages(1): User Commands.