Entendiendo el comando Linux/Unix: encontrar


El comando find de Linux y Unix ejecuta una búsqueda de archivos en una jerarquía de directorios.

Sintaxis para find comando:

encontrar[ruta…][expresión]

Descripción

Esta página de manual documenta la versión GNU de find. El comando find busca el árbol de directorios arraigado en cada nombre de archivo dado evaluando la expresión dada de izquierda a derecha, de acuerdo con las reglas de precedencia (ver sección sobre Operadores más adelante), hasta que se conozca el resultado; en otras palabras, el lado izquierdo es falso para las operaciones y , verdadero para las operaciones o , en cuyo momento find se mueve al siguiente nombre de archivo.

El primer argumento que comienza con:

  • ( o ) ,
  • !

se toma como el comienzo de la expresión; cualquier argumento antes que las rutas de búsqueda, y cualquier argumento después de ella es el resto de la expresión. Si no se indican rutas, se utiliza el directorio actual. Si no se da ninguna expresión, se utiliza la expresión -print.

El comando find find sale con el estado 0 si todos los ficheros se procesan correctamente, mayor que 0 si se producen errores.

Expresiones

La expresión se compone de opciones (que afectan al funcionamiento general en lugar de al procesamiento de un archivo específico, y siempre devuelven true), pruebas (que devuelven un valor verdadero o falso) y acciones (que tienen efectos secundarios y devuelven un valor verdadero o falso), todas separadas por operadores. La expresión -and se asume cuando se omite el operador. Si la expresión no contiene más acciones que -prune, entonces -print se realiza en todos los archivos para los que la expresión es verdadera.

Opciones

Todas las opciones siempre vuelven a ser verdaderas. Siempre surten efecto, en lugar de ser procesados sólo cuando se alcanza su lugar en la expresión. Por lo tanto, para mayor claridad, es mejor colocarlos al principio de la expresión.

– daystartHoras de medición (para -amin, -atime, -cmin, -ctime, -mmin, y -mtime) desde el comienzo del día de hoy en lugar de desde hace 24 horas. -depthProcesa el contenido de cada directorio antes que el propio directorio. -followEnlaces simbólicos de referencia. Implica -noleaf. -help or –helpImprimir un resumen del uso de la línea de comandos de find y salir. -maxdepth [number]Descend at most number of levels (a non-negative integer) of directories below the command line arguments. La expresión -maxdepth 0 significa sólo aplicar las pruebas y acciones a los argumentos de la línea de comandos. -mindepth[number]No aplicar ninguna prueba o acción a niveles inferiores al número (un entero no negativo). La expresión -mindepth 1 significa procesar todos los archivos excepto los argumentos de la línea de comandos. -mountNo descienda directorios a otros sistemas de ficheros. Un nombre alternativo para -xdev, para compatibilidad con otras versiones de find. -noleafNo optimizar asumiendo que los directorios contienen 2 subdirectorios menos que su número de enlaces duros.* -version o –versionImprimir el find número de versión y salir. -xdevNo descienda directorios a otros sistemas de ficheros.

* Esta opción es necesaria cuando se buscan sistemas de archivos que no siguen la convención de enlaces de directorios de Unix, como sistemas de archivos en CD-ROM o MS-DOS o puntos de montaje de volúmenes AFS. Cada directorio en un sistema de ficheros Unix normal tiene al menos 2 enlaces duros: su nombre y su . (período) entrada. Además, sus subdirectorios (si los hay) tienen cada uno una entrada . vinculada a ese directorio.

Cuando find examina un directorio, después de haber establecido dos subdirectorios menos que el número de enlaces del directorio, sabe que el resto de las entradas en el directorio no son directorios ( leaf ficheros en el árbol de directorios). Si sólo es necesario examinar los nombres de los archivos, no hay necesidad de ponerlos en estado; esto da un aumento significativo en la velocidad de búsqueda.

Pruebas

Los argumentos numéricos se pueden especificar como:

+n Para mayor que n. -n Para menor que n. nPara mayor información nPara mayor información -la última vez que se accedió a la vitamina nArchivo n fue hace minutos. -anewer[file]File was last accessed more recently than file was modified. -anewer se ve afectado por -follow sólo si -follow es anterior a -anewer en la línea de comandos. -a time nFile was last accessed n*24 hours ago. -cmin nEl estado del fichero fue modificado por última vez n hace unos minutos. -cnewer[archivo]El estado del archivo fue cambiado por última vez más recientemente que el archivo fue modificado.
.- cnewer se ve afectado por -follow sólo si -follow aparece antes -cnewer en la línea de comandos. -ctime nEl estado del archivo fue modificado por última vez n*hace 24 horas. -emptyFile está vacío y es un archivo normal o un directorio. -falseSiempre falso. -fstype[type]File está en un sistema de ficheros de tipo especificado. Los tipos de sistema de archivos válidos varían entre las diferentes versiones de Unix; una lista incompleta de tipos de sistema de archivos que son aceptados en alguna versión de Unix u otra es: ufs, 4.2, 4.3, nfs, tmp, mfs, S51K, S52K. Puede usar -printf con la directiva %F para ver los tipos de sus sistemas de ficheros. -gid nEl ID de grupo numérico del fichero es n. -group[gname]File pertenece al grupo gname (ID de grupo numérico permitido). -ilname[pattern]Like -lname, pero la coincidencia no distingue entre mayúsculas y minúsculas. -iname[pattern]Like -nombre, pero la coincidencia no distingue entre mayúsculas y minúsculas. Por ejemplo, los patrones fo* y F?? coinciden con los nombres de archivo Foo, FOO, foo, fOo, etc. -inum nEl archivo tiene un número de inodo n. -ipath[pattern]Like -path, pero la coincidencia no distingue entre mayúsculas y minúsculas. -iregex[pattern]Like -regex, pero la coincidencia no distingue entre mayúsculas y minúsculas. -links nFile has n links. -lname[pattern]File es un enlace simbólico cuyo contenido coincide con el patrón del shell. Los metacaracteres no tratan / o . especialmente. -mmin nLos datos de File fueron modificados por última vez n hace unos minutos. -mtime nLos datos del fichero se modificaron por última vez n*hace 24 horas. -nombre[pattern]Base of file name (la ruta con los directorios principales eliminados) coincide con el patrón de shell. Los metacaracteres ( * , ? , y [] ) no coinciden con un . al principio del nombre base. Para ignorar un directorio y los archivos bajo él, use -prune; vea un ejemplo en la descripción de -path. -newer[file]File was modified more recently than file. La expresión -newer se ve afectada por -follow sólo si -follow aparece antes -newer en la línea de comandos. -nouserNingún usuario corresponde al ID de usuario numérico del archivo. -nogroupNingún grupo corresponde al ID de grupo numérico del archivo. -path[pattern]El nombre del archivo coincide con el patrón de shell pattern. Los metacaracteres no tratan / o . especialmente; así que, por ejemplo, encuentre . -La ruta ‘./sr*sc imprimirá una entrada para un directorio llamado ./src/misc (si existe). Para ignorar un árbol de directorios completo, use -prune en lugar de comprobar todos los archivos del árbol. Por ejemplo, para omitir el directorio src/emacs y todos los archivos y directorios que se encuentran debajo, e imprimir los nombres de los otros archivos encontrados, haga algo como lo siguiente: find . -path ‘./src/emacs’ -prune -o -print -perm[mode]Los bits de permiso del fichero son exactamente [mode] (octal o simbólico). Los modos simbólicos utilizan el modo 0 como punto de partida. -perm -modeTodos los bits de permiso [mode] están configurados para el archivo. -perm +modeCualquiera de los bits de permiso [mode] está configurado para el archivo. -regex[pattern]El nombre del archivo coincide con la expresión regular pattern. Esta es una coincidencia en todo el camino, no una búsqueda. Por ejemplo, para que coincida con un archivo llamado ./fubar3, puede usar la expresión regular .*bar. o .*b.*3 , pero no b.*r3 . -size n[bckw]File uses n units of space. Las unidades son bloques de 512 bytes por defecto o si sigue b n, bytes si sigue c n, kilobytes si sigue k n, o palabras de 2 bytes si sigue w n. El tamaño no cuenta los bloques indirectos, pero sí los bloques en archivos dispersos que no están realmente asignados. -trueSiempre verdadero. – tipo cEl archivo es de tipo c: bBlock (buffered) special cCharacter (unbuffered) special dDirectory pNamed pipe (FIFO) fRegular file lSymbolic link sSocket Ddoor (Solaris) uid nEl ID de usuario numérico del archivo es n. -used nFile was last accessed n days after its status was last changed. -user unameFile es propiedad del usuario uname (ID de usuario numérico permitido). -xtype cLo mismo que -type a menos que el archivo sea un enlace simbólico. Para enlaces simbólicos: if -follow< -xtype comprueba el tipo de archivo que -type no comprueba.

Acciones

-exec command ;

Ejecutar comando; true si se devuelve el estado 0. Todos los argumentos siguientes a find son tomados como argumentos para el comando hasta que se encuentra un argumento que consiste en `;’. La cadena `{}’ se reemplaza por el nombre del archivo actual que se procesa en todos los casos en que aparece en los argumentos del comando, no sólo en los argumentos en los que está solo, como en algunas versiones de find . Ambas construcciones podrían necesitar ser escapadas (con un “’) o citadas para protegerlas de la expansión por el caparazón. El comando se ejecuta en el directorio de inicio.

-fls archivo

True; like -ls but write to file like -fprint.

-fprint archivo

True; imprime el nombre completo del archivo en el archivo file. Si file no existe cuando find se ejecuta, se crea; si existe, se trunca. Los nombres de archivo “/dev/stdout” y “/dev/stderr” se manejan de forma especial; se refieren a la salida estándar y a la salida de error estándar, respectivamente.

-fprint0 archivo

True; like -print0 but write to file like -fprint.

-fprintf file format

True; like -printf but write to file like -fprint.

-ok comando ;

Como -exec pero pregunte primero al usuario (en la entrada estándar); si la respuesta no comienza con `y’ o `Y’, no ejecute el comando y devuelva false.

-imprimir

True; imprime el nombre completo del archivo en la salida estándar, seguido de una nueva línea.

-imprimir0

True; imprime el nombre completo del archivo en la salida estándar, seguido de un carácter nulo. Esto permite que los nombres de archivos que contienen líneas nuevas sean interpretados correctamente por programas que procesan la salida find .

-printf format

True; imprime format en la salida estándar, interpretando los escapes `’ y las directivas `%’. Los anchos de campo y las precisiones se pueden especificar como con la función `printf’ C. A diferencia de -print, -printf no añade una nueva línea al final de la cadena. Los escapes y las directivas son:

a

Timbre de alarma.

b

Retroceso.

c

Detenga inmediatamente la impresión desde este formato y limpie la salida.

f

Avance de forma.

Newline.

r

Retorno de carro.

t

Pestaña Horizontal.

v

Pestaña Vertical.

\

Una barra invertida literal (“’).

NNNNN

El carácter cuyo código ASCII es NNN (octal).

Un carácter “’ seguido de cualquier otro carácter se trata como un carácter ordinario, por lo que ambos se imprimen.

%%

de

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *