FIND(1) General Commands Manual FIND(1) NOMBRE find - buscador de archivos en un arbol de directorios SINOPSIS find [-H] [-L] [-P] [-D debugopts] [-Olevel] [punto-de-inicio...] [expresion] DESCRIPCION Esta pagina del manual documenta la version GNU de find. find de GNU busca en el arbol de directorios en cada punto de inicio dado, evaluando la expresion dada de izquierda a derecha, segun las reglas de precedencia (vease la seccion OPERADORES), hasta conocer el resultado (el lado izquierdo es falso para las operaciones and, verdadero para or), momento en el que find pasa al siguiente nombre de archivo. Si no se especifica ningun punto de inicio, se tomara <<.>>. Si utiliza find en un entorno donde la seguridad es importante (por ejemplo, si lo utiliza para buscar directorios con permisos de escritura para otros usuarios), deberia leer el capitulo <> de la documentacion de findutils, que se llama Finding Files y se incluye con findutils. Ese documento tambien incluye muchos mas detalles y analisis que esta pagina del manual, por lo que puede resultarle una fuente de informacion mas util. OPCIONES Las opciones -H, -L y -P controlan el tratamiento de los enlaces simbolicos. Los argumentos de la linea de ordenes que siguen a estos se consideran nombres de archivos o directorios a examinar, hasta el primer argumento que comience con <<->>, <<(>> o <>. Ese argumento y los siguientes se consideran la expresion que describe lo que se busca. Si no se especifica ninguna ruta, se utiliza el directorio actual. Si no se especifica ninguna expresion, se utiliza la expresion -print (aunque, de todas formas, probablemente deberia considerar usar -print0 en su lugar). Esta pagina del manual trata sobre las <> dentro de la lista de expresiones. Estas opciones controlan el comportamiento de find, pero se especifican inmediatamente despues del ultimo nombre de la ruta. Las cinco opciones <> -H, -L, -P, -D y -O deben aparecer antes del primer nombre de la ruta, si es que aparecen. Teoricamente, se podria usar un doble guion -- para indicar que los argumentos restantes no son opciones, pero esto no funciona realmente debido a la forma en que find determina el final de la siguiente ruta. Argumentos: lo hace leyendo hasta que llega un argumento de expresion (que tambien empieza con <<->>). Ahora bien, si un argumento de ruta empieza con <<->>, find lo trataria como argumento de expresion. Por lo tanto, para garantizar que todos los puntos de inicio se tomen como tales, y especialmente para evitar que los patrones comodin expandidos por el shell que realiza la llamada se traten erroneamente como argumentos de expresion, generalmente es mas seguro prefijar los comodines o nombres de ruta dudosos con <<./>> o usar nombres de ruta absolutos que empiecen por <>. Como alternativa, generalmente es seguro, aunque no es portable, usar la opcion GNU -files0-from para pasar puntos de inicio arbitrarios a find. -P No seguir enlaces simbolicos. Este es el comportamiento predeterminado. Cuando find examina o imprime informacion sobre archivos, y el archivo es un enlace simbolico, la informacion utilizada se tomara de las propiedades del propio enlace simbolico. -L Sigue enlaces simbolicos. Cuando find examina o imprime informacion sobre archivos, la informacion utilizada se tomara de las propiedades Del archivo al que apunta el enlace, no del enlace en si (a menos que se trate de un enlace simbolico roto o que find no pueda examinar el archivo al que apunta). El uso de esta opcion implica -noleaf. Si posteriormente se utiliza la opcion -P, -noleaf seguira vigente. Si -L esta vigente y find descubre un enlace simbolico a un subdirectorio durante su busqueda, se buscara en el subdirectorio al que apunta el enlace simbolico. Cuando la opcion -L esta activa, el predicado de -type siempre coincidira con el tipo de archivo al que apunta un enlace simbolico, no con el enlace en si (a menos que el enlace simbolico este roto). Las acciones que pueden provocar la rotura de enlaces simbolicos mientras find se esta ejecutando (por ejemplo, -delete) pueden generar un comportamiento confuso. El uso de -L hace que los predicados -lname y -ilname siempre retornen falso. -H No sigue enlaces simbolicos, salvo durante el proceso de los argumentos de la linea de ordenes. Cuando find examina o imprime informacion sobre archivos, esta se obtendra de las propiedades del propio enlace simbolico. La unica excepcion a este comportamiento ocurre cuando un archivo especificado en la linea de ordenes es un enlace simbolico y este se puede resolver. En ese caso, la informacion se obtiene del lugar a lo que apunta el enlace (es decir, se sigue el enlace). La informacion sobre el enlace se utiliza como alternativa si el archivo al que apunta el enlace simbolico no se puede examinar. Si -H esta en vigor y una de las rutas especificadas en la linea de ordenes es un enlace simbolico a un directorio, se examinara el contenido de dicho directorio (aunque, por supuesto, -maxdepth 0 lo impediria). Si se especifica mas de una opcion entre -H, -L y -P, cada una prevalece sobre las demas; la ultima que aparece en la linea de comandos es la que tiene efecto. Dado que es la opcion predeterminada, la opcion -P debe considerarse activa a menos que se especifique -H o -L. GNU find suele analizar los archivos durante el procesamiento de la linea de ordenes, antes de iniciarse la busqueda. Estas opciones tambien afectan el procesamiento de dichos argumentos. En concreto, existen varias pruebas que comparan los archivos listados en la linea de ordenes con el archivo que estamos considerando. En cada caso, se habra examinado el archivo especificado en la linea de ordenes y se habran guardado algunas de sus propiedades. Si el archivo nombrado es, de hecho, un enlace simbolico y la opcion -P esta activa (o si no se especificaron ni -H ni -L), la informacion utilizada para la comparacion se tomara de las propiedades del enlace simbolico. De lo contrario, se tomara de las propiedades del archivo al que apunta el enlace. Si find no puede seguir el enlace (por ejemplo, porque no tiene suficientes privilegios o el enlace apunta a un archivo inexistente), se utilizaran las propiedades del propio enlace. Cuando las opciones -H o -L estan activas, cualquier enlace simbolico listado como argumento de -newer se desreferenciara y la marca de tiempo se tomara del archivo al que apunta el enlace simbolico. La misma consideracion se aplica a -newerXY, -anewer y -cnewer. La opcion -follow tiene un efecto similar a -L, aunque surte efecto en el punto donde aparece (es decir, si no se utiliza -L, pero si -follow, cualquier enlace simbolico que aparezca despues de -follow en la linea de ordenes se desreferenciara, y los anteriores no). -D debugopts Muestra informacion de diagnostico; Esto puede ser util para diagnosticar problemas que expliquen por que find no funciona correctamente. La lista de opciones de depuracion debe estar separada por comas. No se garantiza la compatibilidad de las opciones de depuracion entre versiones de findutils. Para obtener una lista completa de las opciones de depuracion validas, consulte la salida de find -D help. Las opciones de depuracion validas incluyen: exec Muestra informacion de diagnostico relacionada con -exec, -execdir, -ok y -okdir opt Muestra informacion de diagnostico relacionada con la optimizacion del arbol de expresiones; consulte la opcion -O. rates Muestra un resumen que indica la frecuencia con la que cada predicado tuvo exito o fallo. search Navega detalladamente por el arbol de directorios. stat Muestra mensajes a medida que se examinan los archivos con las llamadas al sistema stat y lstat. El programa find intenta minimizar dichas llamadas. tree Muestra el arbol de expresiones en su forma original y optimizada. all Habilita todas las demas opciones de depuracion (salvo help). help Explica las opciones de depuracion. -Olevel Habilita la optimizacion de consultas. El programa find reordena las pruebas para acelerar la ejecucion, preservando la efectividad; es decir, los predicados con efectos secundarios no se reordenan entre si. Las optimizaciones realizadas en cada nivel de optimizacion son las siguientes: 0 Equivalente al nivel de optimizacion 1. 1 Este es el nivel de optimizacion predeterminado y corresponde al comportamiento tradicional. Las expresiones se reordenan para que las pruebas basadas unicamente en los nombres de los archivos (por ejemplo, -name y -regex) se ejecuten primero. 2 Las pruebas -type o -xtype se realizan despues de las pruebas basadas unicamente en los nombres de los archivos, pero antes de las pruebas que requieren informacion del inodo. En muchas versiones modernas de Unix, los tipos de archivo se obtienen mediante readdir(), por lo que estos predicados son mas rapidos de evaluar que los predicados que primero deben especificar el archivo. Si se utiliza el predicado -fstype FOO y se especifica un tipo de sistema de archivos FOO desconocido (es decir, presente en <>) al iniciar find, dicho predicado equivale a -false. 3 En este nivel de optimizacion, se habilita el optimizador de consultas basado en el coste completo. El orden de las pruebas se modifica para que las pruebas mas rapidas y eficientes se realicen primero y las mas costosas despues, si es necesario. Dentro de cada rango de coste, los predicados se evaluan antes o despues segun su probabilidad de exito. Para -o, los predicados con probabilidad de exito se evaluan antes, y para -a, los predicados con probabilidad de fallo se evaluan antes. El optimizador basado en costes tiene una idea fija de la probabilidad de exito de una determinada prueba. En algunos casos, la probabilidad tiene en cuenta la naturaleza especifica de la prueba (por ejemplo, se asume que -type f tiene mayor probabilidad de exito que -type c). El optimizador basado en costes se encuentra actualmente en evaluacion. Si no mejora el rendimiento de find, se eliminara. Por el contrario, las optimizaciones que demuestren ser fiables, robustas y eficaces podran habilitarse con el tiempo en niveles de optimizacion mas bajos. Sin embargo, el comportamiento predeterminado (es decir, el nivel de optimizacion 1) no se modificara en la version 4.3.x. El conjunto de pruebas findutils ejecuta todas las pruebas en find en cada nivel de optimizacion y garantiza que el resultado sea el mismo. La reordenacion de las operaciones realizadas por el optimizador basado en costes puede provocar cambios de comportamiento visibles para el usuario. Por ejemplo, los predicados -readable y -empty son sensibles a la reordenacion. Si se ejecutan en el orden -empty -readable, se emitira un mensaje de error para los directorios ilegibles. Si se ejecutan en el orden -readable -empty, no se emitira ningun mensaje de error. Esta es la razon por la que dicha reordenacion de operaciones no se realiza en el nivel de optimizacion predeterminado. EXPRESION La parte de la linea de ordenes despues de la lista de puntos de inicio es la expression. Se trata de una especie de especificacion de consulta que describe como se comparan los archivos y que se hace con los archivos encontrados. Una expresion se compone de una secuencia de elementos: Pruebas Las pruebas devuelven un valor verdadero o falso, generalmente en funcion de alguna propiedad del archivo que se este considerando. La prueba -empty, por ejemplo, solo es verdadera cuando el archivo actual esta vacio. Acciones Las acciones tienen efectos secundarios (como mostrar algo en la salida estandar) y devuelven verdadero o falso, generalmente segun su resultado. La accion -print, por ejemplo, muestra el nombre del archivo actual en la salida estandar. Opciones globales Las opciones globales afectan el funcionamiento de las pruebas y acciones especificadas en cualquier parte de la linea de ordenes. Siempre devuelven verdadero. La opcion -depth, por ejemplo, hace que find recorra el sistema de archivos en profundidad. Opciones posicionales Las opciones posicionales solo afectan a las pruebas o acciones posteriores. Siempre devuelven verdadero. La opcion -regextype, por ejemplo, es posicional y especifica el dialecto de la expresion regular para las expresiones regulares que aparecen posteriormente en la linea de ordenes. Operadores Los operadores unen los demas elementos de la expresion. Incluyen, por ejemplo, -o (que significa OR logico) y -a (que significa AND logico). Si falta un operador, se asume -a. La accion -print se ejecuta en todos los archivos para los que la expresion completa es verdadera, a menos que contenga una accion distinta de -prune o -quit. Las acciones que inhiben la accion predeterminada -print son -delete, -exec, -execdir, -ok, -okdir, -fls, -fprint, -fprintf, -ls, -print y -printf. La accion -delete tambien funciona como una opcion (ya que implica -depth). OPCIONES DE POSICION Las opciones de posicion siempre devuelven verdadero. Afectan unicamente a las pruebas que se realizan posteriormente en la linea de ordenes. -daystart Mide los tiempos (para -amin, -atime, -cmin, -ctime, -mmin y -mtime) desde el inicio de hoy en lugar de hace 24 horas. Esta opcion solo afecta a las pruebas que aparecen posteriormente en la linea de ordenes. -follow Obsoleto; utilice la opcion -L en su lugar. Desreferencia enlaces simbolicos. Implica -noleaf. La opcion -follow solo afecta a las pruebas que aparecen despues en la linea de ordenes. A menos que se defina la opcion -H o -L, la posicion de la opcion -follow cambia el comportamiento del predicado -newer; cualquier archivo listado como argumento de -newer se desreferenciara si es un enlace simbolico. La misma consideracion se aplica a -newerXY, -anewer y -cnewer. De forma similar, el predicado -type siempre coincidira con el tipo de archivo al que apunta un enlace simbolico, no con el propio enlace. El uso de -follow hace que los predicados -lname y -ilname siempre devuelvan falso. -regextype tipo Modifica la sintaxis de las expresiones regulares que comprenden las pruebas -regex y -iregex que se realizan posteriormente en la linea de ordenes. Para ver que tipos de expresiones regulares se conocen, utilice -regextype help. La documentacion de Texinfo (consulte CONSULTE TAMBIEN) explica el significado y las diferencias entre los distintos tipos de expresiones regulares. Si no utiliza esta opcion, find se comporta como si se hubiera especificado el tipo de expresion regular emacs. -warn, -nowarn Activa o desactiva los mensajes de advertencia. Estas advertencias se aplican unicamente al uso de la linea de ordenes, no a las condiciones que find pueda encontrar al buscar directorios. El comportamiento predeterminado corresponde a -warn si la entrada estandar es una tty, y a -nowarn en caso contrario. Si se genera un mensaje de advertencia relacionado con el uso de la linea de ordenes, no afecta al estado de salida de find. Si la variable de entorno POSIXLY_CORRECT esta definida y tambien se utiliza -warn, no se especifica que advertencias estaran activas, si las hay. OPCIONES GLOBALES Las opciones globales siempre devuelven verdadero. Las opciones globales surten efecto incluso en las pruebas que se realizan anteriormente en la linea de ordenes. Para evitar confusiones, las opciones globales deben definirse en la linea de ordenes despues de la lista de puntos de inicio, justo antes de la primera prueba, opcion posicional o accion. Si se especifica una opcion global en otro lugar, find mostrara un mensaje de advertencia explicando que esto puede ser confuso. Las opciones globales aparecen despues de la lista de puntos de inicio, por lo que no son del mismo tipo que, por ejemplo, -L. -d Sinonimo de -depth, para compatibilidad con FreeBSD, NetBSD, MacOS X y OpenBSD. -depth Procesa el contenido de cada directorio antes que el del propio directorio. La accion -delete tambien implica -depth. -files0-from archivo Lee los puntos de inicio desde archivo en lugar de obtenerlos en la linea de ordenes. A diferencia de las limitaciones conocidas de pasar puntos de inicio mediante argumentos en la linea de ordenes, como la limitacion en la cantidad de nombres de archivo y la ambiguedad inherente de los nombres de archivo que entran en conflicto con los nombres de las opciones, usar esta opcion permite pasar de forma segura un numero arbitrario de puntos de inicio a find. Usar esta opcion y pasar puntos de inicio en la linea de ordenes es mutuamente excluyente y, por lo tanto, no esta permitido simultaneamente. El argumento archivo es obligatorio. Se puede usar -files0-from - para leer la lista de puntos de inicio del flujo entrada estandar, por ejemplo, de una tuberia. En este caso, no se pueden usar las acciones -ok y -okdir, ya que interferirian con la lectura de entrada estandar para obtener la confirmacion del usuario. Los puntos de inicio en archivo deben estar separados por caracteres ASCII NUL. Dos caracteres NUL consecutivos (es decir, un punto de inicio con un nombre de archivo de longitud cero) no estan permitidos y generaran un diagnostico de error seguido de un codigo de salida distinto de cero. Si el archivo archivo esta vacio, find no procesa ningun punto de inicio y, por lo tanto, saldra inmediatamente despues de analizar los argumentos del programa. Esto difiere de la invocacion estandar, donde find asume el directorio actual como punto de inicio si no se pasa ningun argumento de ruta. El procesamiento de los puntos de inicio es, por lo demas, habitual, por ejemplo. find accedera recursivamente a subdirectorios a menos que se impida. Para procesar solo los puntos de inicio, se puede pasar adicionalmente -maxdepth 0. Notas adicionales: Si un archivo aparece mas de una vez en el archivo de entrada, no se especifica si se visita mas de una vez. Si el archivo se modifica durante la operacion de find, el resultado tampoco se especifica. Finalmente, la posicion de busqueda dentro del archivo mencionado al salir de find, ya sea con -quit o de cualquier otra forma, tampoco se especifica. Aqui, <> significa que puede funcionar o no, o realizar alguna accion especifica, y que el comportamiento puede variar segun la plataforma o la version de findutils. -help, --help Muestra un sumario del modo de empleo de find y acaba. -ignore_readdir_race En general, find emitira un mensaje de error cuando no pueda crear un archivo. Si se activa esta opcion y se elimina un archivo entre el momento en que find lee el nombre del archivo del directorio y el momento en que intenta obtener el archivo, no se emitira ningun mensaje de error. Esto tambien se aplica a archivos o directorios cuyos nombres se indican en la linea de ordenes. Esta opcion se activa en el momento en que se lee la linea de ordenes, lo que significa que no se puede buscar una parte del sistema de archivos con esta opcion activada y otra con esta opcion desactivada (si es necesario, se deberan ejecutar dos veces find, uno con la opcion y otro sin ella). Ademas, find con la opcion -ignore_readdir_race ignorara los errores de la accion -delete si el archivo ha desaparecido desde que se leyo el directorio principal: no se emitira un diagnostico de error y el codigo de retorno de la accion -delete sera verdadero. -maxdepth niveles Desciende un maximo de niveles (un entero no negativo) niveles de directorios por debajo de los puntos de partida. Usar -maxdepth 0 significa aplicar las pruebas y acciones solo a los puntos de partida. -mindepth niveles No aplica pruebas ni acciones a niveles inferiores a niveles (un entero positivo). Usar -mindepth 1 significa procesar todos los archivos excepto los puntos de partida. -mount No descender a directorios en otros sistemas de ficheros. Un nombre alternativo para -xdev, por compatibilidad con algunas otras versiones de find. -noignore_readdir_race Desactiva el efecto de -ignore_readdir_race. -noleaf No optimiza asumiendo que los directorios contienen 2 subdirectorios menos que su numero de enlaces fisicos. Esta opcion es necesaria al buscar sistemas de archivos que no siguen la convencion de enlaces de directorios de Unix, como sistemas de archivos de CD-ROM o MS-DOS, o puntos de montaje de volumenes AFS. Cada directorio en un sistema de archivos Unix normal tiene al menos 2 enlaces fisicos: su nombre y su entrada <<.>>. Ademas, sus subdirectorios (si los hay) tienen cada uno una entrada <<..>> vinculada a ese directorio. Cuando find examina un directorio, tras haber especificado 2 subdirectorios menos que su numero de enlaces, sabe que el resto de las entradas del directorio no son directorios (archivos <> en el arbol de directorios). Si solo se deben examinar los nombres de los archivos, no sera necesario especificarlos; esto aumenta significativamente la velocidad de busqueda. -version, --version Muestra el numero de version de find y acaba. -xdev No desciende a directorios en otros sistemas de ficheros. Vea -mount mas arriba. COMPARACIONES Algunas pruebas, por ejemplo, -newerXY y -samefile, permiten comparar el archivo que se esta examinando con algun archivo de referencia especificado en la linea de ordenes. Al utilizar estas pruebas, la interpretacion del archivo de referencia se determina mediante las opciones -H, -L y -P, asi como cualquier -follow anterior. Sin embargo, el archivo de referencia solo se examina una vez, al analizar la linea de ordenes. Si no se puede examinar el archivo de referencia (por ejemplo, si la llamada al sistema stat(2) falla), se emite un mensaje de error y find finaliza con un estado distinto de cero. Se puede definir un argumento numerico n para las pruebas (como -amin, -mtime, -gid, -inum, -links, -size, -uid y -used) como +n para mayor que n, -n para menor que n, n para exactamente n. Pruebas compatibles: -amin n El archivo se accedio por ultima vez hace menos de, mas de o exactamente n minutos. -anewer referencia La hora del ultimo acceso al archivo actual es mas reciente que la de la ultima modificacion de datos del archivo referencia. Si referencia es un enlace simbolico y la opcion -H o -L esta activa, siempre se utiliza la hora de la ultima modificacion de datos del archivo al que apunta. -atime n El ultimo acceso al archivo fue hace menos de, mas de o exactamente n*24 horas. Cuando find calcula cuantos periodos de 24 horas hace que se accedio al archivo por ultima vez, se ignora cualquier fraccion; por lo tanto, para que coincida con -atime +1, se debe haber accedido a un archivo hace al menos dos dias. -cmin n El estado del archivo se modifico por ultima vez hace menos de, mas de o exactamente n minutos. -cnewer referencia La hora del ultimo cambio de estado del archivo actual es mas reciente que la de la ultima modificacion de datos del archivo reference. Si reference es un enlace simbolico y la opcion -H o -L esta activa, siempre se utiliza la hora de la ultima modificacion de datos del archivo al que apunta. -ctime n El estado del archivo se modifico por ultima vez hace menos de, mas de o exactamente n*24 horas. Consulte los comentarios de -atime para ver como el redondeo afecta la interpretacion de las horas de cambio del estado del archivo. -empty El fichero esta vacio y es o un fichero regular o un directorio. -executable Concuerda con archivos ejecutables y directorios que el usuario actual puede buscar (en terminos de resolucion de nombres de archivo). Esto tiene en cuenta las listas de control de acceso y otros artefactos de permisos que la prueba -perm ignora. Esta prueba utiliza la llamada al sistema access(2) y, por lo tanto, puede ser enganada por servidores NFS que realizan mapeo de UID (o squashing de raiz), ya que muchos sistemas implementan access(2) en el kernel del cliente y, por lo tanto, no pueden utilizar la informacion de mapeo de UID almacenada en el servidor. Dado que esta prueba se basa unicamente en el resultado de la llamada al sistema access(2), no se garantiza que un archivo probado con exito pueda ejecutarse. -false Siempre da falso. -fstype tipo El fichero esta en un sistema de ficheros de tipo tipo. Los tipos validos de sistemas de ficheros varian segun la version de Unix; una lista incompleta de tipos de sistemas de ficheros que se aceptan en algunas versiones de Unix es: ufs, 4.2, 4.3, nfs, tmp, mfs, S51K, S52K. Se puede usar -printf con la directiva %F para ver los tipos de sus sistemas de ficheros. (En Linux, cat /proc/filesystems dara una lista de los tipos de sistemas de ficheros reconocidos.) -gid n El ID de grupo numerico del archivo es menor que, mayor que o exactamente n. -group grupo El fichero pertenece al grupo grupo (se permite un GID numerico). -ilname patron Igual que -lname, pero la coincidencia no distingue entre mayusculas y minusculas. Si la opcion -L o -follow esta activa, esta prueba devuelve falso a menos que el enlace simbolico este roto. -iname patron Igual que -name, pero la concordancia no distingue entre mayusculas y minusculas. Por ejemplo, los patrones <> y <> concuerdan con los nombres de archivo <>, <>, <>, <>, etc. El patron <<*foo*>> tambien concordara con un archivo llamado <<.foobar>>. -inum n El archivo tiene un numero de inodo menor que, mayor que o exactamente n. Normalmente es mas facil usar la prueba -samefile. -ipath patron Como -path, pero la concordancia no hace caso de mayusculas ni minusculas. -iregex patron Como -regex, pero la concordancia no hace caso de mayusculas ni minusculas. -iwholename patron Vease -ipath. Esta alternativa es menos portable que -ipath. -links n El archivo tiene menos de, mas de o exactamente n enlaces fisicos. -lname patron El archivo es un enlace simbolico cuyo contenido coincide con el patron de shell patron. Los metacaracteres no tratan especificamente <> ni <<.>>. Si la opcion -L o -follow esta activa, esta prueba devuelve falso a menos que el enlace simbolico este roto. -mmin n Los datos del archivo se modificaron por ultima vez hace menos de, mas de o exactamente n minutos. -mtime n Los datos del archivo se modificaron por ultima vez hace menos de, mas de o exactamente n*24 horas. Consulte los comentarios de -atime para comprender como el redondeo afecta la interpretacion de las horas de modificacion de los archivos. -name patron La base del nombre de archivo (la ruta sin los directorios principales) coincide con el patron de shell patron. Dado que se eliminan los directorios principales de los nombres de archivo, patron no debe incluir una barra, ya que <<-name a/b>> nunca concordara con nada (y probablemente prefiera usar -path en su lugar). Una excepcion ocurre cuando se usa solo una barra como patron (<<-nombre />>), ya que es una cadena valida para concordar con el directorio raiz <> (ya que el nombre base de <> sera propiamente <>). Se muestra un aviso si se intenta pasar un patron que contenga una barra, pero no solo una, a menos que la variable de entorno POSIXLY_CORRECT este definida o se use la opcion -nowarn. Para ignorar un directorio y los archivos que contiene, se usa -prune en lugar de revisar todos los archivos del arbol; un ejemplo puede verse en la descripcion de esa accion. Las llaves no se reconocen como especiales, a pesar de que algunas shell, incluyendo Bash, les otorgan un significado especial en sus patrones. La concordancia de nombres de archivo se realiza mediante la funcion de biblioteca fnmatch(3). No olvide encerrar el patron entre comillas para protegerlo de la expansion de shell. -newer referencia La fecha de la ultima modificacion de datos del archivo actual es mas reciente que la fecha de la ultima modificacion de datos del archivo referencia. Si referencia es un enlace simbolico y la opcion -H o -L esta activa, siempre se utiliza la fecha de la ultima modificacion de datos del archivo al que apunta. -newerXY referencia Se ejecuta correctamente si la marca de tiempo X del archivo considerado es mas reciente que la marca de tiempo Y del archivo referencia. Las letras X e Y pueden ser cualquiera de las siguientes: a Hora de acceso del archivo referencia B Hora de creacion del archivo referencia c Hora de cambio del estado del inodo de referencia m Hora de modificacion del archivo referencia t referencia se interpreta directamente como una hora. Algunas combinaciones no son validas; por ejemplo, no es valido que X sea t. Algunas combinaciones no estan implementadas en todos los sistemas; por ejemplo, B no es compatible con todos los sistemas. Si se define una combinacion de XY no valida o no compatible, se producira un error. Las especificaciones de hora se interpretan igual que en el caso del argumento de la opcion -d de GNU fecha. Si se intenta utilizar la hora de creacion de un archivo de referencia y no se puede determinar, se muestra un mensaje de error. Si se define una prueba que hace referencia a la hora de creacion de los archivos examinados, esta prueba fallara para cualquier archivo cuya hora de nacimiento sea desconocida. -nogroup Ningun grupo se corresponde con el GID numerico del fichero. -nouser Ningun usuario se corresponde con el UID numerico del fichero. -path patron El nombre del fichero concuerda con el patron del shell patron. Los metacaracteres no tratan de forma especial a <> o a <<.>>; asi, por ejemplo, find . -path "./sr*sc" Muestra una entrada para un directorio llamado ./src/misc (si existe). Para ignorar todo el arbol de directorios, use -prune en lugar de comprobar cada archivo del arbol. Tenga en cuenta que la prueba de concordancia de patrones se aplica a todo el nombre del archivo, comenzando desde uno de los puntos de inicio indicados en la linea de ordenes. Solo tendria sentido usar una ruta absoluta si el punto de inicio relevante tambien es una ruta absoluta. Esto significa que esta orden nunca tendra concordancias: find bar -path /foo/bar/miarchivo -print Find comparara el argumento de -path con la concatenacion de un nombre de directorio y el nombre base del archivo que examina. Dado que la concatenacion nunca termina con una barra, los argumentos de -path que terminen en una barra no coincordaran con nada (salvo quizas con un punto de inicio definido en la linea de ordenes). El predicado -path tambien es compatible con HP-UX find y forma parte del estandar POSIX 2008. -perm modo Los bits de permiso del archivo son exactamente modo (octal o simbolico). Dado que se requiere una concordancia exacta, si desea usar este formato para modos simbolicos, podria tener que especificar una cadena de modo bastante compleja. Por ejemplo, <<-perm g=w>> solo concordara con archivos en modo 0020 (es decir, aquellos para los que el permiso de escritura de grupo es el unico establecido). Es mas probable que desee usar las formas <> o <<->>, por ejemplo, <<-perm -g=w>>, que concuerda con cualquier archivo con permiso de escritura de grupo. Consulte la seccion EJEMPLOS para ver algunos ejemplos ilustrativos. -perm -modo Todos los bits de permiso modo estan configurados para el archivo. Los modos simbolicos se aceptan en este formato, y esta es la forma habitual en que se utilizarian. Debe especificar <>, <> u <> si utiliza un modo simbolico. Consulte la seccion EJEMPLOS para ver algunos ejemplos ilustrativos. -perm /modo Cualquier bit de permiso modo esta configurado para el archivo. Se aceptan modos simbolicos en este formato. Debera definir <>, <> u <> si utiliza un modo simbolico. Consulte la seccion EXAMPLES para ver algunos ejemplos ilustrativos. Si no se configuran bits de permiso en mode, esta prueba concordara con cualquier archivo (la idea es mantener la coherencia con el comportamiento de -perm -000). -perm +modo Esto ya no funciona (obsoleto desde 2005). Utilice -perm /mode en su lugar. -readable Concuerda con archivos legibles por el usuario actual. Esto tiene en cuenta las listas de control de acceso y otros asuntos de permisos que la prueba -perm ignora. Esta prueba utiliza la llamada al sistema access(2), por lo que puede ser enganada por servidores NFS que realizan mapeo de UID (o root-squashing), ya que muchos sistemas implementan access(2) en el nucleo del cliente y, por lo tanto, no pueden usar la informacion de mapeo de UID almacenada en el servidor. -regex patron El nombre del archivo concordara con la expresion regular patron. Se trata de una concordancia en toda la ruta, no una busqueda. Por ejemplo, para encontrar un archivo llamado ./fubar3,, podemos usar la expresion regular <<.*bar.>> o <<.*b.*3>>, pero no <>. Las expresiones regulares que find interpreta son, por defecto, expresiones regulares de Emacs, pero esto se puede cambiar con la opcion -regextype. -samefile nombre El archivo se refiere al mismo inodo que nombre. Cuando -L esta activo, esto puede incluir enlaces simbolicos. -size n[cwbkMG] El archivo utiliza menos de, mas de o exactamente n unidades de espacio, redondeando al alza. Se pueden usar los siguientes sufijos: <> Para bloques de 512 bytes (este es el valor predeterminado si no se usa ningun sufijo) <> Para bytes <> Para palabras de dos bytes <> Para kibibytes (KiB, unidades de 1024 bytes) <> Para mebibytes (MiB, unidades de 1024 * 1024 = 1048576 bytes) <> Para gibibytes (GiB, unidades de 1024 * 1024 * 1024 = 1073741824 bytes) El tamano es simplemente el miembro <> de la estructura <> rellenada por la llamada al sistema <>(o <>), redondeado al alza como se muestra arriba. En otras palabras, es consistente con el resultado obtenido para <>. Tenga en cuenta que los especificadores de formato <<%k>> y <<%b>> de -printf gestionan los archivos dispersos de forma diferente. El sufijo <> siempre denota bloques de 512 bytes y nunca de 1024 bytes, lo cual difiere del comportamiento de -ls. Los prefijos + y - significan mayor que y menor que, como es habitual; es decir, un tamano exacto de n unidades no concordara. Tenga en cuenta que el tamano se redondea a la siguiente unidad. Por lo tanto, -size -1M no es equivalente a -size -1048576c. El primero solo coincide con archivos vacios, el segundo coincide con archivos de 0 a 1.048.575 bytes. -true Siempre da verdadero. -type c El fichero es de tipo c: b especial de bloques (tamponado) c especial de caracteres (sin tamponar) d directorio p tuberia con nombre (FIFO) f fichero regular l Enlace simbolico; esto nunca es cierto si las opciones -L o -follow estan activas, a menos que el enlace simbolico este roto. Si desea buscar enlaces simbolicos cuando -L este activo, utilice -xtype. s zocalo (socket) D door (Solaris) Para buscar mas de un tipo a la vez, puede proporcionar la lista combinada de letras de tipo separadas por una coma <<,>> (extension GNU). -uid n El ID de usuario numerico del archivo es menor que, mayor que o exactamente n. -used n Se accedio al archivo por ultima vez menos que, mas que o exactamente n dias despues del ultimo cambio de estado. -user usuario El propietario del fichero es el usuario usuario (se permite un UID numerico). -wholename patron Vease -path. Esta alternativa es menos portable que -path. -writable Concuerda con archivos con permisos de escritura para el usuario actual. Esto tiene en cuenta las listas de control de acceso y otros asuntos de permisos que la prueba -perm ignora. Esta prueba utiliza la llamada al sistema access(2) y, por lo tanto, puede ser enganada por servidores NFS que realizan mapeo de UID (o squashing de raiz), ya que muchos sistemas implementan access(2) en el nucleo del cliente y, por lo tanto, no pueden usar la informacion de mapeo de UID almacenada en el servidor. -xtype c Identico a -type, a menos que el archivo sea un enlace simbolico. Para enlaces simbolicos: si se definio la opcion -H o -P, verdadero si el archivo es un enlace a un archivo de tipo c; si se especifico la opcion -L, verdadero si c es <>. En otras palabras, para enlaces simbolicos, -xtype verifica el tipo de archivo que -type no verifica. Si un enlace simbolico esta roto (porque el elemento al que apunta no existe o el enlace apunta a si mismo), -xtype se comportara igual que -type. -context patron (Solo SELinux) El contexto de seguridad del archivo coincide con patron. ACCIONES -delete Elimina archivos o directorios; retorna verdadero si la eliminacion se realiza correctamente. Si la eliminacion falla, se muestra un mensaje de error y el estado de salida de find sera distinto de cero (cuando finalmente salga). Advertencia: Recuerde que find evalua la linea de ordenes como una expresion, por lo que al colocar -delete primero, find intentara eliminar todo lo que este por debajo de los puntos de inicio especificados. El uso de la accion -delete activa automaticamente la opcion -depth. Dado que -depth hace que -prune se inacive, la accion -delete no puede combinarse con -prune. A menudo, el usuario podria querer probar la orden find con -print antes de anadir -delete para la ejecucion de la eliminacion. Para evitar resultados inesperados, suele ser recomendable recordar usar -depth explicitamente durante las ejecuciones de prueba anteriores. La accion -delete no eliminara un directorio a menos que este vacio. Junto con la opcion -ignore_readdir_race, find ignorara los errores de la accion -delete si el archivo ha desaparecido desde la lectura del directorio principal: no dara error, no cambiara el codigo de salida a un valor distinto de cero y el codigo de retorno de la accion -delete sera verdadero. -exec orden ; Ejecuta orden; sera verdadero si se devuelve el estado 0. Todos los argumentos posteriores de find se consideran argumentos de la orden hasta que se encuentre un argumento que contenga <<;>>. La cadena <<{}>> se reemplaza por el nombre del archivo actual que se procesa siempre que aparece en los argumentos de la orden, no solo en los argumentos donde aparece sola, como en algunas versiones de find. Ambas construcciones podrian necesitar ser escapadas (con <<\>>) o entrecomilladas para protegerlas de la expansion de la shell. Consulte la seccion EXAMPLES para ver ejemplos de uso de la opcion -exec. La orden especificada se ejecuta una vez por cada archivo coincidente. La orden se ejecuta en el directorio de inicio. Hay inevitables problemas de seguridad relacionados con el uso de la accion -exec; en su lugar, deberia usar la opcion -execdir. -exec orden {} + Esta variante de la accion -exec ejecuta la orden especificada en los archivos seleccionados, pero la linea de ordenes se construye anadiendo el nombre de cada archivo seleccionado al final; el numero total de invocaciones de la orden sera mucho menor que el numero de archivos concordantes. La linea de ordenes se construye de forma muy similar a como xargs construye sus lineas de ordenes. Solo se permite una instancia de <<{}>>, y debe aparecer al final, inmediatamente antes del <<+>>; debe escaparse (con un <<\>>) o entre comillas para evitar que la shell lo interprete. Se ejecuta en el directorio de inicio. Si alguna invocacion con la forma <<+>> devuelve un valor distinto de cero como estado de salida, entonces find devuelve un estado de salida distinto de cero. Si find encuentra un error, esto puede provocar en ocasiones una salida inmediata, por lo que es posible que algunas ordenes pendientes no se ejecuten. Por esta razon, -exec mi-orden ... {} + -quit podria no ejecutar mi-orden. Esta variante de -exec siempre devuelve verdadero. -execdir orden ; -execdir orden {} + Igual que -exec, pero la orden definida se ejecuta desde el subdirectorio que contiene el archivo concirdante, que normalmente no es el directorio donde se inicio find. Al igual que con -exec, se deben entrecomillar {} si se invoca find desde una shell. Este metodo es mucho mas seguro para invocar ordenes, ya que evita condiciones de carrera durante la resolucion de las rutas a los archivos concordantes. Al igual que con la accion -exec, la forma <<+>> de -execdir generara una linea de ordenes para procesar mas de un archivo concordante, pero cualquier invocacion de orden solo listara los archivos que existan en el mismo subdirectorio. Si usa esta opcion, debe asegurarse de que su variable de entorno PATH no haga referencia a <<.>>; de lo contrario, un atacante puede ejecutar cualquier orden que desee dejando un archivo con el nombre apropiado en un directorio en el que ejecutara -execdir. Lo mismo se aplica a tener entradas en PATH que esten vacias o que no sean nombres de directorio absolutos. Si alguna invocacion con la forma <<+>> devuelve un valor distinto de cero como estado de salida, entonces find devuelve un estado de salida distinto de cero. Si find encuentra un error, puede causarse una salida inmediata, por lo que algunas ordenes pendientes podrian no ejecutarse en absoluto. El resultado de la accion depende de si se esta utilizando la variante + o ;; -execdir orden {} + siempre devuelve verdadero, mientras que -execdir orden {} ; devuelvera verdadero solo si orden devuelve 0. -fls fichero Verdadero; como -ls, pero se escribe en archivo como -fprint. El archivo de salida siempre se crea, incluso si el predicado nunca concuerda. Consulte la seccion NOMBRES DE ARCHIVO INUSUALES para obtener informacion sobre como se gestionan los caracteres inusuales en los nombres de archivo. -fprint fichero Verdadero; muestra el nombre completo del archivo en archivo. Si archivo no existe al ejecutar find, se crea; si existe, se trunca. Los nombres de archivo /dev/stdout e /dev/stderr se gestionan de forma especifica; se refieren a la salida estandar y a la salida de error estandar, respectivamente. El archivo de salida siempre se crea, incluso si el predicado nunca concuerda. Consulte la seccion NOMBRES DE ARCHIVO INUSUALES para obtener informacion sobre como se gestionan los caracteres inusuales en los nombres de archivo. -fprint0 fichero Verdadero; igual a -print0, pero se escribe en archivo como -fprint. El archivo de salida siempre se crea, incluso si el predicado nunca concuerda. Consulte la seccion NOMBRES DE ARCHIVO INUSUALES para obtener informacion sobre como se gestionan los caracteres inusuales en los nombres de archivo. -fprintf fichero formato Verdadero; como -printf, pero se escribe en archivo como -fprint. El archivo de salida siempre se crea, incluso si el predicado nunca concuerda. Consulte la seccion NOMBRES DE ARCHIVO INUSUALES para obtener informacion sobre como se gestionan los caracteres inusuales en los nombres de archivo. -ls Verdadero; muestra el archivo actual en formato ls -dils por la salida estandar. Los bloques se contabilizan en bloques de 1 KB, a menos que se configure la variable de entorno POSIXLY_CORRECT, en cuyo caso se utilizan bloques de 512 bytes. Consulte la seccion NOMBRES DE ARCHIVO INUSUALES para obtener informacion sobre como se gestionan los caracteres inusuales en los nombres de archivo. -ok orden ; Similar a -exec, pero preguntando primero al usuario. Si el usuario acepta, ejecutara la orden y sino devuelve falso. Si se ejecuta la orden, su entrada estandar se redirige desde /dev/null. Esta accion no puede definirse junto con la opcion -files0-from. La respuesta a la solicitud se compara con un par de expresiones regulares para determinar si es afirmativa o negativa. Esta expresion regular se obtiene del sistema si la variable de entorno POSIXLY_CORRECT esta establecida o, en caso contrario, de las traducciones de mensajes de find. Si el sistema no tiene una definicion adecuada, se utilizara la propia definicion de find. En cualquier caso, la interpretacion de la expresion regular se vera afectada por las variables de entorno LC_CTYPE (clases de caracteres) y LC_COLLATE (rangos de caracteres y clases de equivalencia). -okdir orden ; Similar a -execdir, pero preguntando primero al usuario igual que en el caso de -ok. Si el usuario no accede, simplemente devuelve falso. Si se ejecuta la orden, su entrada estandar se redirige desde /dev/null. Esta accion no puede definirse junto con la opcion -files0-from. -print Verdadero; muestra el nombre completo del archivo por la salida estandar, seguido de un salto de linea. Si esta canalizando la salida de find a otro programa y existe posibilidad de que los archivos que busca contengan un salto de linea, deberia considerar seriamente usar la opcion -print0 en lugar de -print. Consulte la seccion NOMBRES DE ARCHIVO INUSUALES para obtener informacion sobre la gestion de los caracteres inusuales en los nombres de archivo. -print0 Verdadero; muestra el nombre completo del archivo en la salida estandar, seguido de un caracter nulo (en lugar del salto de linea que utiliza -print). Esto permite que los nombres de archivo que contienen saltos de linea u otros tipos de espacios en blanco sean interpretados correctamente por los programas que procesan la salida de find. Esta opcion corresponde a la opcion -0 de xargs. Verdadero; muestra formato en la salida estandar, interpretando los escapes <<\>> y las directivas <<%>>. El ancho y la precision de los campos se pueden especificar como con la funcion C printf(3). Tenga en cuenta que muchos campos se muestran como %s en lugar de %d, lo que puede indicar que los indicadores no funcionen como deberian. Esto tambien significa que el indicador <<->> funciona alineando los campos a la izquierda). A diferencia de -print, -printf no anade una nueva linea al final de la cadena. Los escapes y las directivas son: -printf formato Verdadero; muestra formato en la salida estandar, interpretando los escapes <<\>> y las directivas <<%>>. El ancho y la precision de los campos se pueden definir igual que en el caso de la funcion C printf(3). Considere que muchos campos se muestran como %s en lugar de %d, lo que puede significar que los indicadores no cumplan su funcion como se espera. Esto tambien significa que el indicador `-' funciona (alinea los campos a la izquierda). A diferencia de -print, -printf no anade una nueva linea al final de la cadena. Los escapes y las directivas son: \a La campana de alarma. \b Espacio atras. \c Para la impresion de este formato inmediatamente y vuelca el bufer de salida. \f Salto de pagina. \n Nueva linea. \r Retorno de carro. \t Tabulador horizontal. \v Tabulador vertical. \0 ASCII NULL \\ Una barra inclinada inversa literal (`\'). \NNN El caracter cuyo codigo ASCII es NNN (octal). Un caracter <<\>> seguido por otro cualquiera distinto de los anteriores se trata como un caracter ordinario, asi que se muestran ambos. %% Un signo de porcentaje literal <<%>>. %a La hora del ultimo acceso al archivo en el formato devuelto por la funcion C ctime(3). %Ak La hora del ultimo acceso al archivo en el formato definido por k, que sera `@' o una directiva para la funcion C strftime(3). A continuacion, puede verse una lista incompleta de posibles valores para k. Consulte la documentacion de strftime(3) la lista completa. Es posible que algunos caracteres de especificacion de conversion no esten disponibles en todos los sistemas debido a diferencias en la implementacion de la funcion de la biblioteca strftime(3). @ Segundo (00.00 .. 61.00). Incluye una parte fraccionaria. Campos de tiempo: H hora (00..23) I hora (01..12) k hora ( 0..23) l hora ( 1..12) M minuto (00..59) p AM o PM, en su representacion local r hora, formato de 12 horas (hh:mm:ss [AP]M) S Segundo (00.00 .. 61.00). Incluye una parte fraccionaria. T tiempo, formato de 24 horas (hh:mm:ss.xxxxxxxxxx) + Fecha y hora, separadas por `+', por ejemplo, `2004-04-28+22:22:05.0'. Se trata de una extension de GNU. La hora se expresa en la zona horaria actual (que puede verse afectada al configurar la variable de entorno TZ). El campo de segundos incluye una parte fraccionaria. X Representacion de la hora de la configuracion regional (H:M:S). El campo de segundos incluye una parte fraccionaria. Z zona horaria (e.g., CET), o nada si el huso horario no es determinable Campos de fecha: a nombre local abreviado del dia de la semana (Dom..Sab) A nombre local completo del dia de la semana, longitud variable (Domingo..Sabado) b nombre local abreviado del mes (Ene..Dic) B nombre local completo del mes, longitud variable (Enero..Diciembre) c Fecha y hora de la configuracion regional (sab 4 nov 1989 12:02:33 CEST). El formato es el mismo que para ctime(3) y, para mantener la compatibilidad con dicho formato, no hay una parte fraccionaria en el campo de segundos. d dia del mes (01..31) D fecha (mm/dd/aa) F fecha (aaaa-mm-dd) h lo mismo que b j dia del ano (juliano) (001..366) m mes numerico (01..12) U numero de la semana del ano con el Domingo como primer dia de la semana (00..53) w dia de la semana, numerico (0..6) W numero de la semana del ano como el Lunes como el primer dia de la semana (00..53) x representacion local de la fecha (dd/mm/aa) y los ultimos dos digitos del ano (00..99) Y ano (1970...) %b La cantidad, en bloques de 512 bytes, de espacio en disco utilizada para este archivo. Dado que el espacio en disco se asigna en multiplos del tamano de bloque del sistema de archivos, este valor suele ser mayor que %s/512, pero tambien puede ser menor si el archivo esta disperso. %Bk Hora de <> del archivo, es decir: su hora de creacion, en el formato definido por k, identico que para %A. Esta directiva genera una cadena vacia si el sistema operativo o el sistema de archivos subyacente no admite horas de nacimiento. %c El tiempo del ultimo cambio del estado del fichero en el formato devuelto por la funcion de C ctime(3). %Ck El tiempo del ultimo cambio del estado del fichero en el formato especificado por k, que es el mismo que para %A. %d Profundidad del archivo en el arbol de directorios; 0 significa que el archivo es un punto de partida. %D El numero de dispositivo donde existe el archivo (el campo st_dev de struct stat), en decimal. %f Muestra la base del nombre; el nombre del archivo sin los directorios principales (solo el ultimo elemento). Para /, el resultado sera `/'. Consulte la seccion EXAMPLES para ver un ejemplo. %F Tipo del sistema de ficheros donde esta el fichero; este valor puede emplearse para -fstype. %g El nombre de grupo al que pertenece el fichero, o el GID numerico si el grupo no tiene nombre. %G El GID numerico del grupo al que pertenece el fichero. %h Nombre del directorio: los directorios principales del nombre del archivo (todos menos el ultimo elemento). Si el nombre del archivo no contiene barras diagonales (si se encuentra en el directorio actual), el especificador %h se expande a <<.>>. Para archivos que son directorios y contienen una barra diagonal (incluido /), %h se expande a la cadena vacia. Consulte la seccion EXAMPLES para ver un ejemplo. %H Punto de inicio bajo el cual se encontro el archivo. %i El numero-i del fichero (en base 10). %k La cantidad de espacio en disco utilizado para este archivo en bloques de 1 KB. Dado que el espacio en disco se asigna en multiplos del tamano de bloque del sistema de archivos, este valor suele ser mayor que %s/1024, pero tambien puede ser menor si el archivo esta disperso. %l El objeto de un enlace simbolico (la cadena vacia si el fichero no es un enlace simbolico). %m Bits de permiso del archivo (en formato octal). Esta opcion utiliza los numeros <> que utilizan la mayoria de las implementaciones de Unix, pero si su implementacion particular utiliza un orden inusual de bits de permisos octales, observara una diferencia entre el valor real del modo del archivo y la salida de %m. Normalmente, querra un cero a la izquierda de este numero; para ello, debe usar la opcion # (como, por ejemplo, `%#m'). %M Permisos del archivo (en formato simbolico, como para ls). Compatible con findutils 4.2.5 y posteriores. %n El numero de enlaces duros del fichero. %p El nombre del fichero. %P Nombre del archivo con el nombre del punto de partida bajo el que se encontro eliminado. %s El tamano del fichero en bytes. %S Dispersion del archivo. Se calcula como (BLOCKSIZE*st_blocks / st_size). El valor exacto que obtendra para un archivo normal de cierta longitud depende del sistema. Sin embargo, normalmente los archivos dispersos tendran valores menores a 1.0, y los archivos que usan bloques indirectos pueden tener un valor mayor a 1.0. En general, el numero de bloques que utiliza un archivo depende del sistema de archivos. El valor de BLOCKSIZE depende del sistema, pero suele ser de 512 bytes. Si el tamano del archivo es cero, el valor mostrado no esta definido. En sistemas que no admiten st_blocks, se asume que la dispersion de un archivo es 1.0. %t El tiempo de ultima modificacion del fichero en el formato devuelto por la funcion de C ctime(3). %Tk El tiempo de ultima modificacion del fichero en el formato especificado por k, que es el mismo que para %A. %u El nombre del usuario propietario del fichero, o el UID si el usuario no tiene nombre. %U El UID numerico del propietario del fichero. %y Tipo de archivo (como en ls -l), U=tipo desconocido (no deberia suceder). %Y Tipo de archivo (como %y), mas el seguimiento de enlaces simbolicos: <>=bucle, <>=inexistente, <> para cualquier otro error al determinar el tipo del destino de un enlace simbolico. %Z (Solo SELinux) Contexto de seguridad del archivo. %{ %[ %( Reservado para un uso futuro. El caracter <<%>> seguido de cualquier otro caracter se descarta, pero el otro caracter se muestra (no confie demasiado en ello, ya que podrian anadirse mas caracteres de formato). Un <<%>> al final del argumento de formato causa un comportamiento erratico, al no haber ningun caracter posterior. En ciertas configuraciones regionales, puede ocultar las llaves de la puerta, mientras que en otras puede eliminar la ultima pagina de la novela que esta leyendo. Las directivas %m y %d admiten los indicadores #, 0 y +, pero el resto de directivas no, incluso si muestran numeros. Las directivas numericas que no admiten estos indicadores son: G, U, b, D, k y n. El indicador de formato <<->> si se admite y cambia la alineacion de un campo de justificado a la derecha (predeterminado) a justificado a la izquierda. Consulte la seccion NOMBRES DE ARCHIVO INUSUALES para obtener informacion acerca de la gestion de caracteres inusuales en los nombres de archivo. -prune Verdadero; Si el archivo es un directorio, no se accede a el. Si se indica -depth, -prune no tendra efecto. Dado que -delete implica -depth, no es de interes usar -prune y -delete juntos. Por ejemplo, para omitir el directorio src/emacs y todos los archivos y directorios que contiene, y mostrar los nombres de los demas archivos encontrados, ejecute lo siguiente: find . -path ./src/emacs -prune -o -print -quit Termina inmediatamente (con valor de retorno cero si no se han producido errores). Esto es diferente de -prune porque -prune solo se aplica al contenido de los directorios recortados, mientras que -quit simplemente hace que find se detenga inmediatamente sin dejar ningun proceso hijo en ejecucion. Cualquier linea de ordenes generada por -exec ... + o -execdir ... + se invoca antes de salir del programa. Despues de ejecutar -quit, no se procesaran mas archivos especificados en la linea de ordenes. Por ejemplo, <> mostrara solo <>. Un uso comun de <<-quit>> es detener la busqueda en el sistema de archivos una vez encontrado el archivo deseado. Por ejemplo, si solo queremos encontrar un archivo, podemos hacer lo siguiente: find / -name needle -print -quit OPERADORES Listados en orden de precedencia decreciente: ( expr ) Fuerza la precedencia. Dado que los parentesis son especificos de la shell, normalmente es necesario entrecomillarlos. Muchos de los ejemplos de esta pagina del manual utilizan barras invertidas para este proposito: <<\(...\)>> en lugar de <<(...)>>. ! expr Verdadero si expr es falso. Este caracter tambien suele necesitar proteccion para evitar que la shell lo interprete. -not expr Igual que <>, pero no compatible con POSIX. expr1 expr2 Dos expresiones consecutivas se consideran unidas mediante un -a implicito; expr2 no se evalua si expr1 es falso. expr1 -a expr2 Lo mismo que expr1 expr2. expr1 -and expr2 Igual que expr1 expr2, pero no es compatible con POSIX. expr1 -o expr2 O; expr2 no se evalua si expr1 es verdad. expr1 -or expr2 Igual que expr1 -o expr2, pero no es compatible con POSIX. expr1 , expr2 Lista; tanto expr1 como expr2 se evaluan siempre. El valor de expr1 se descarta; el valor de la lista es el valor de expr2. El operador de coma puede ser util para buscar varios tipos de elementos, pero recorriendo la jerarquia del sistema de archivos solo una vez. La accion -fprintf puede usarse para listar los distintos elementos coincidentes en varios archivos de salida diferentes. Tenga en cuenta que al definir expresamente -a (por ejemplo, mediante dos pruebas que aparecen sin un operador explicito entre ellas) o si tiene mayor precedencia que -o. Esto significa que find . -name archivo-a -o -name archivo-b -print nunca mostrara archivo-a. NOMBRES DE ARCHIVO INUSUALES Muchas de las acciones de find hacen que se muestren datos controlados por otros usuarios. Esto incluye nombres de archivo, tamanos, fechas de modificacion, etc. Los nombres de archivo son un problema potencial, ya que pueden contener cualquier caracter excepto <<\0>> y <>. Los caracteres inusuales en los nombres de archivo pueden tener efectos inesperados y, a menudo, indeseables en el terminal (por ejemplo, cambiar la configuracion de las teclas de funcion en algunos terminales). Los caracteres inusuales se gestionan de forma diferente segun las distintas acciones, como se describe a continuacion. -print0, -fprint0 Muestra siempre el nombre de archivo exacto, sin cambios, incluso si la salida se dirige a un terminal. -ls, -fls Los caracteres inusuales siempre se escapan. Los espacios en blanco, las barras invertidas y las comillas dobles se imprimen con el escape de estilo C (por ejemplo, <<\f>>, <<\>>). Otros caracteres inusuales se imprimen con un escape octal. Otros caracteres imprimibles se muestran tal cual. Para -ls y -fls, estos son los caracteres entre los octales 041 y 0176. -printf, -fprintf Si la salida no se dirige a un terminal, se muestra tal cual. De lo contrario, el resultado depende de la directiva en uso. Las directivas %D, %F, %g, %G, %H, %Y y %y se expanden a valores que no estan bajo el control de los propietarios de los archivos, por lo que se muestran tal cual. Las directivas %a, %b, %c, %d, %i, %k, %m, %M, %n, %s, %t, %u y %U tienen valores que estan bajo el control de los propietarios de los archivos, pero que no se pueden usar para enviar datos arbitrarios al terminal, por lo que se muestran tal cual. Las directivas %f, %h, %l, %p y %P se entrecomillan. Este entrecomillado se realiza del mismo modo que para GNU ls. Este no es el mismo mecanismo de entrecomillado que el usado para -ls y -fls. Si puede decidir el formato de salida de find, normalmente es mejor usar <<\0>> como terminador que usar saltos de linea, ya que los nombres de archivo pueden contener espacios en blanco y caracteres de nueva linea. La variable de entorno LC_CTYPE se utiliza para determinar que caracteres deben entrecomillarse. -print, -fprint El uso de comillas se realiza igual que para -printf y -fprintf. Si utiliza find en un script donde los archivos concordantes podrian tener nombres arbitrarios, deberia considerar usar -print0 en lugar de -print. Las acciones -ok y -okdir muestran el nombre del archivo actual tal cual. Esto podria cambiar en futuras versiones. CONFORMIDAD CON LOS ESTANDARES Si se desea una conformidad mas estricta con el estandar POSIX, debera definirse la variable de entorno POSIXLY_CORRECT. Las siguientes opciones se definen en el estandar POSIX (IEEE Std 1003.1-2008, edicion 2016): -H Esta opcion es compatible. -L Esta opcion es compatible. -name Esta opcion es compatible, pero la conformidad con POSIX depende de la conformidad con POSIX de la funcion de biblioteca fnmatch(3) del sistema. A partir de findutils-4.2.2, los metacaracteres de la shell (por ejemplo, `*', <> o <<[]>>) coinciden con un <<.>> inicial, ya que la interpretacion IEEE PASC 126 lo exige. Esto supone un cambio con respecto a versiones anteriores de findutils. -type Compatible. POSIX define <>, <>, <>, <>, <

>, <> y <>. La version de GNU tambien admite <>, que representa una puerta, cuando el sistema operativo la proporciona. Ademas, GNU find permite definir varios tipos a la vez en una lista separada por comas. -ok Compatible. La interpretacion de la respuesta se basa en los patrones <> y <> seleccionados al configurar la variable de entorno LC_MESSAGES. Cuando se configura la variable de entorno POSIXLY_CORRECT, estos patrones se toman de la definicion del sistema de una respuesta positiva (si) o negativa (no). Consulte la documentacion del sistema para nl_langinfo(3), en particular YESEXPR y NOEXPR. Si no esta definida POSIXLY_CORRECT, los patrones se toman del propio catalogo de mensajes de find. -newer Compatible. Si el archivo definido es un enlace simbolico, siempre se desreferencia. Esto supone un cambio respecto al comportamiento anterior, que solia tomar la hora relevante del enlace simbolico; consulte la seccion HISTORIAL a continuacion. -perm Compatible. Si no se define la variable de entorno POSIXLY_CORRECT, se admiten algunos argumentos de modo (por ejemplo, +a+x) que no son validos en POSIX por compatibilidad con versiones anteriores. Otras primarias Las primarias -atime, -ctime, -depth, -exec, -group, -links, -mtime, -nogroup, -nouser, -ok, -path, -print, -prune, -size, -user y -xdev son compatibles. El estandar POSIX define los parentesis <<(>>, <<)>>, la negacion <> y los operadores logicos AND/OR -a y -o. Todas las demas opciones, predicados, expresiones, etc., son extensiones del estandar POSIX. Sin embargo, muchas de estas extensiones no son exclusivas de GNU find. El estandar POSIX exige que find detecte bucles: find debera detectar bucles infinitos. Es decir, si entra en un directorio previamente visitado que es ancestro del ultimo archivo encontrado. Al detectar un bucle infinito, find mostrara un mensaje de diagnostico en la salida de error estandar y recuperara su posicion en la jerarquia o finalizara. GNU find cumple con estos requisitos. El numero de enlaces de los directorios que contienen enlaces duros a un ancestro suele ser menor de lo normal. Esto puede significar que GNU find, en ocasiones, optimiza la visita a un subdirectorio que, en realidad, es un enlace a un ancestro. Dado que find no accede a dicho subdirectorio, se permite evitar la emision de un mensaje de diagnostico. Aunque este comportamiento puede resultar algo confuso, es improbable que alguien dependa de el. Si la optimizacion de paginas se ha desactivado con -noleaf, la entrada del directorio siempre se examinara y se mostrara el mensaje de diagnostico cuando corresponda. Los enlaces simbolicos no pueden utilizarse para crear ciclos del sistema de archivos como tales, pero si se utilizan las opciones -L o -follow, se emitira un mensaje de diagnostico cuando find encuentre un bucle de enlaces simbolicos. Al igual que con los bucles que contienen enlaces fisicos, la optimizacion de paginas suele implicar que find sabe que no necesita llamar a stat() ni a chdir() en el enlace simbolico, por lo que este diagnostico no suele ser necesario. La opcion -d es compatible con varios sistemas BSD, pero se recomienda utilizar la opcion -depth, compatible con POSIX. La variable de entorno POSIXLY_CORRECT no afecta el comportamiento de las pruebas -regex o -iregex, ya que estas pruebas no figuran en la definicion del estandar POSIX. VARIABLES DE ENTORNO LANG Proporciona un valor predeterminado para las variables de internacionalizacion que no estan definidas o son nulas. LC_ALL Si se define con un valor de cadena no vacio, anula los valores de todas las demas variables de internacionalizacion. LC_COLLATE El estandar POSIX define que esta variable afecta la concordancia de patrones que se utilizara para la opcion -name. GNU find utiliza la funcion de biblioteca fnmatch(3), por lo que la compatibilidad con LC_COLLATE depende de la biblioteca del sistema. Esta variable tambien afecta la interpretacion de la respuesta a -ok; mientras que la variable LC_MESSAGES selecciona el patron utilizado para interpretar la respuesta a -ok, la interpretacion de cualquier expresion entre corchetes en el patron se vera afectada por LC_COLLATE. LC_CTYPE Esta variable afecta al tratamiento de las clases de caracteres utilizadas en expresiones regulares y tambien con la prueba -name, si la funcion de fnmatch(3) del sistema la admite. Esta variable tambien afecta a la interpretacion de cualquier clase de caracteres en las expresiones regulares utilizadas para interpretar la respuesta al mensaje emitido por -ok. La variable de entorno LC_CTYPE tambien afecta que caracteres se consideran no imprimibles al imprimir nombres de archivo; consulte la seccion NOMBRES DE ARCHIVO INUSUALES. LC_MESSAGES Determina la configuracion regional que se utilizara para los mensajes internacionalizados. Si la variable de entorno POSIXLY_CORRECT esta configurada, tambien determina la interpretacion de la respuesta a la solicitud generada por la accion -ok. NLSPATH Determina la ubicacion de los catalogos de mensajes de internacionalizacion. PATH Afecta a los directorios en los que se buscan los ejecutables invocados por -exec, -execdir, -ok y -okdir. POSIXLY_CORRECT Determina el tamano de bloque utilizado por -ls y -fls. Si POSIXLY_CORRECT esta configurada, los bloques son unidades de 512 bytes. Sino, son unidades de 1024 bytes. Configurar esta variable tambien desactiva los mensajes de advertencia (es decir, implica -nowarn) por defecto, ya que POSIX requiere que, ademas de la salida de -ok, todos los mensajes impresos en stderr sean de diagnostico y su estado de salida sea distinto de cero. Cuando POSIXLY_CORRECT no esta definido, -perm +zzz se trata igual que -perm /zzz si +zzz no es un modo simbolico valido. Cuando POSIXLY_CORRECT esta definido, estas construcciones se tratan como un error. Cuando POSIXLY_CORRECT esta definido, la respuesta a la solicitud generada por la accion -ok se interpreta segun el catalogo de mensajes del sistema, en lugar de segun las traducciones de mensajes de find. TZ Afecta la zona horaria utilizada para algunas directivas de formato relacionadas con la hora de -printf y -fprintf. EJEMPLOS Metodo simple <> o Busca archivos llamados core en el directorio /tmp o debajo de el y los elimina. $ find /tmp -name core -type f -print | xargs /bin/rm -f Tenga en cuenta que esto no funcionara correctamente si hay nombres de archivo que contengan saltos de linea, comillas simples o dobles, o espacios. Metodo mas seguro: <> o Buscar archivos llamados core en el directorio /tmp o debajo de el y eliminarlos, procesando los nombres de archivo de forma que los nombres de archivo o directorio que contengan comillas simples o dobles, espacios o saltos de linea se gestionen correctamente. $ find /tmp -name core -type f -print0 | xargs -0 /bin/rm -f La prueba -name se realiza antes que la prueba -type para evitar tener que llamar a stat(2) en cada archivo. Tenga en cuenta que aun existe una carrera entre el momento en que find recorre la jerarquia mostrando los nombres de archivo concordantes y el momento en que el proceso ejecutado por xargs trabaja con ese archivo. Procesando puntos de inicio arbitrarios o Dado que otro programa, proggy, prefiltra y crea una enorme lista de archivos separados por NUL, los procesa como puntos de partida y encuentra todos los archivos vacios y regulares, entre ellos: $ proggy | find -files0-from - -maxdepth 0 -type f -empty Con `-files0-from -` se leen los nombres de los puntos de partida desde la entrada estandar, es decir: desde la tuberia; y -maxdepth 0 garantiza que solo se examinen explicitamente esas entradas sin descender por los directorios (en caso de que uno de los puntos de partida sea uno). Ejecutar una orden para cada archivo o Ejecuta archivo en cada archivo dentro o debajo del directorio actual. $ find . -type f -exec file '{}' \; Observe que las llaves estan entre comillas simples para evitar que sean interpretadas por la shell. El punto y coma se protege de forma similar mediante una barra invertida aunque, en este caso, tambien se podrian haber usado comillas simples. En muchos casos, se podria preferir la sintaxis `-exec ... +` o, mejor aun, `-execdir ... +` por razones de rendimiento y seguridad. Recorre el sistema de archivos una sola vez - para dos acciones diferentes o Recorre el sistema de archivos una sola vez, listando los archivos y directorios setuID en /root/suid.txt y los archivos grandes en /root/big.txt. $ find / \ \( -perm -4000 -fprintf /root/suid.txt '%#m %u %p\n' \) , \ \( -size +100M -fprintf /root/big.txt '%-10s %p\n' \) Este ejemplo utiliza el caracter de continuacion de linea '\') en las dos primeras lineas para indicar a la shell que continue leyendo la orden en la siguiente. Busqueda de archivos por antiguedad o Buscara archivos en su directorio personal que se hayan modificado en las ultimas veinticuatro horas. $ find $HOME -mtime 0 Esta orden funciona asi porque el tiempo transcurrido desde la ultima modificacion de cada archivo se divide entre 24 horas y el resto se descarta. Esto significa que para que coincida con -mtime 0, un archivo debera haber tenido una modificacion anterior de hace menos de 24 horas. Busqueda de archivos por permisos o Busca archivos ejecutables pero no legibles. $ find /sbin /usr/sbin -executable \! -readable -print o Busca archivos con permisos de lectura y escritura para su propietario y grupo, pero en los que otros usuarios pueden leer, pero no escribir. $ find . -perm 664 Los archivos que cumplen estos criterios, pero tienen establecidos otros bits de permisos (por ejemplo, si alguien puede ejecutar el archivo), no se buscaran. o Busca archivos con permisos de lectura y escritura para su propietario y grupo, y en los que otros usuarios pueden leer, independientemente de la presencia de permisos adicionales (por ejemplo, el bit de ejecucion). $ find . -perm -664 Esto buscara un archivo con modo 0777, por ejemplo. o Busca archivos con permisos de escritura para alguien (su propietario, su grupo o cualquier otra persona). $ find . -perm /222 o Busca archivos con permisos de escritura para su propietario o su grupo. $ find . -perm /220 $ find . -perm /u+w,g+w $ find . -perm /u=w,g=w Las tres ordenes hacen lo mismo, la primera usa la representacion octal del modo de archivo y las otras dos usan la forma simbolica. No es necesario que los archivos tengan permisos de escritura tanto para el propietario como para el grupo, con uno de los dos sirve. o Busca archivos con permisos de escritura tanto para el propietario como para el grupo. $ find . -perm -220 $ find . -perm -g+w,u+w Ambas ordenes hacen lo mismo. o Busqueda mas elaborada de permisos. $ find . -perm -444 -perm /222 \! -perm /111 $ find . -perm -a+r -perm /a+w \! -perm /a+x Estas dos ordenes buscan archivos legibles para todos (-perm -444 o -perm -a+r), con al menos un bit de escritura activado (-perm /222 o -perm /a+w), pero no ejecutables para nadie (! -perm /111 o ! -perm /a+x, respectivamente). Recorte: omision de archivos y subdirectorios o Copia el contenido de /source-dir a /dest-dir, pero omite los archivos y directorios llamados .snapshot (y todo lo que contengan). Tambien omite los archivos o directorios cuyo nombre termine en `~', pero no su contenido. $ cd /source-dir $ find . -name .snapshot -prune -o \( \! -name '*~' -print0 \) \ | cpio -pmd0 /dest-dir La construccion -prune -o \( ... -print0 \) es bastante comun. La idea es que la expresion anterior a -prune coincida con los elementos que se van a recortar (<>). Sin embargo, la accion -prune devuelve verdadero, por lo que la siguiente -o garantiza que el lado derecho se evalue solo para los directorios no recortados (el contenido de esos directorios ni siquiera se visita, por lo que su contenido es irrelevante). La expresion del lado derecho de -o esta entre parentesis solo para mayor claridad. Enfatiza que la accion -print0 se ejecuta solo para los elementos a los que no se les aplico -prune. Dado que la condicion <> predeterminada entre pruebas tiene mas prevalencia que -o, esta es la predeterminada de todos modos, pero los parentesis ayudan a clarificar lo que sucede. o Dado el siguiente directorio De los proyectos y sus directorios SCM administrativos asociados, realiza una busqueda eficiente de las raices de los proyectos: $ find repo/ \ \( -exec test -d '{}/.svn' \; \ -or -exec test -d '{}/.git' \; \ -or -exec test -d '{}/CVS' \; \ \) -print -prune Ejemplo de resultado: repo/project1/CVS repo/gnu/project2/.svn repo/gnu/project3/.svn repo/gnu/project3/src/.svn repo/project4/.git En este ejemplo, -prune evita la innecesaria entrada a directorios ya descubiertos (por ejemplo, no buscamos project3/src porque ya hemos encontrado project3/.svn), pero garantiza la busqueda de directorios hermanos (project2 y project3). Otros ejemplos utiles o Busqueda de varios tipos de archivo $ find /tmp -type f,d,l Buscamos archivos, directorios y enlaces simbolicos en el directorio /tmp pasando estos tipos como una lista separada por comas (extension GNU), que por lo demas es equivalente a la opcion mas larga, pero mas portable: $ find /tmp \( -type f -o -type d -o -type l \) o Busca archivos con el nombre concreto needle y se detiene inmediatamente al encontrar el primero. $ find / -name needle -print -quit o Demuestra la interpretacion de las directivas de formato %f y %h de la accion -printf para algunos casos especiales. A continuacion, se muestra un ejemplo con algunos resultados. $ find . .. / /tmp /tmp/TRACE compile compile/64/tests/find -maxdepth 0 -printf '[%h][%f]\n' [.][.] [.][..] [][/] [][tmp] [/tmp][TRACE] [.][compile] [compile/64/tests][find] ESTADO DE SALIDA find finalizara con el estado 0 si todos los archivos se procesan correctamente, y mayor que 0 si se produjeron errores. Esta descripcion es muy ambigua, pero si el valor de retorno es distinto de cero, no se debe confiar en la exactitud de los resultados de find. Cuando se produce un error, find puede detenerse inmediatamente, sin completar todas las acciones definidas. Por ejemplo, es posible que no se hayan examinado algunos puntos de inicio o que no se hayan realizado algunas invocaciones de programa pendientes para -exec ... {} + o -execdir ... {} +. HISTORIAL Una version de find se publico en la version 5 de Unix como parte del proyecto Programmer's Workbench y fue escrito por Dick Haight. El libro A Research UNIX Reader: Annotated Excerpts from the Programmer's Manual, 1971-1986 de Doug McIlroy aporta algunos detalles adicionales. Puede leerlo online en https://www.cs.dartmouth.edu/~doug/reader.pdf. GNU find fue originalmente programado por Eric Decker, con mejoras de David MacKenzie, Jay Plett y Tim Wood. La idea de find -print0 y xargs -0 provino de Dan Bernstein. COMPATIBILIDADES A partir de findutils-4.2.2, los metacaracteres de la shell (por ejemplo, <<*>>, <> o <<[]>>) utilizados en patrones de nombre de archivo coinciden con un <<.>> inicial, ya que la interpretacion IEEE POSIX 126 lo requiere. A partir de findutils-4.3.3, -perm /000 concuerda con todos los archivos en lugar de con ninguno. Las marcas de tiempo con resolucion de nanosegundos se implementaron en findutils-4.3.3. A partir de findutils-4.3.11, la accion -delete establece el estado de salida de find en un valor distinto de cero cuando falla. Sin embargo, find no finaliza inmediatamente. Anteriormente, el estado de salida de find no se veia afectado por el fallo de -delete. Caracteristica Anadido en Tambien aparece en -files0-from 4.9.0 -newerXY 4.3.3 BSD -D 4.3.1 -O 4.3.1 -readable 4.3.0 -writable 4.3.0 -executable 4.3.0 -regextype 4.2.24 -exec ... + 4.2.12 POSIX -execdir 4.2.12 BSD -okdir 4.2.12 -samefile 4.2.11 -H 4.2.5 POSIX -L 4.2.5 POSIX -P 4.2.5 BSD -delete 4.2.3 -quit 4.2.3 -d 4.2.3 BSD -wholename 4.2.0 -iwholename 4.2.0 -ignore_readdir_race 4.2.0 -fls 4.0 -ilname 3.8 -iname 3.8 -ipath 3.8 -iregex 3.8 La sintaxis -perm +MODE se elimino en findutils-4.5.12, en favor de -perm /MODE. La sintaxis +MODE habia quedado obsoleta desde findutils-4.2.21, publicado en 2005. NO ERRORES Sorpresas sobre la precedencia de operadores La orden find . -name afile -o -name bfile -print nunca mostrara afile porque es equivalente a find. -name afile -o \( -name bfile -a -print \). Recuerde que la precedencia de -a es mayor que la de -o y, cuando no se indica ningun operador entre las pruebas, se asume -a. Mensaje de error "paths must precede expression") $ find . -name *.c -print find: paths must precede expression find: possible unquoted pattern after predicate `-name'? Esto ocurre cuando la shell puede expandir el patron *.c a mas de un nombre de archivo existente en el directorio actual y pasar los nombres de archivo resultantes en la linea de ordenes a find del siguiente modo: find . -name frcode.c locate.c word_io.c -print Ese orden, por supuesto, no funcionara, ya que el predicado -name solo permite un patron como argumento. En lugar de hacerlo de esta manera, deberia encerrar el patron entre comillas o escapar el comodin, permitiendo asi que find use el patron con el comodin durante la busqueda de concordancias de nombres de archivo en lugar de los nombres de archivo expandidos por la shell antecesora: $ find . -name '*.c' -print $ find . -name \*.c -print ERRORES Existen problemas de seguridad inherentes al comportamiento que el estandar POSIX define para find, que, por lo tanto, no se pueden solucionar. Por ejemplo, la accion -exec es inherentemente insegura, y deberia usarse -execdir en su lugar. La variable de entorno LC_COLLATE no afecta la accion -ok. INFORMAR DE ERRORES Ayuda en linea de GNU Foreutils: Informe cualquier error de traduccion a Informe cualquier otro problema mediante el formulario del rastreador de errores de GNU Savannah: Los temas generales sobre el paquete GNU findutils se tratan en la lista de correo bug-findutils: COPYRIGHT Copyright (C) 1990-2024 Free Software Foundation, Inc. Licencia GPLv3+: GNU GPL version 3 o posterior . Esto es software libre: usted es libre de cambiarlo y redistribuirlo. NO HAY GARANTIA, en la medida permitida por la legislacion. VEASE TAMBIEN chmod(1), locate(1), ls(1), updatedb(1), xargs(1), lstat(2), stat(2), ctime(3) fnmatch(3), printf(3), strftime(3), locatedb(5), regex(7) Documentacion completa: https://www.gnu.org/software/findutils/find tambien en el propio equipo ejecutando: info find TRADUCCION La traduccion al espanol de esta pagina del manual fue creada por Gerardo Aburruzaga Garcia y Marcos Fouces Esta traduccion es documentacion libre; lea la GNU General Public License Version 3 o posterior con respecto a las condiciones de copyright. No existe NINGUNA RESPONSABILIDAD. Si encuentra algun error en la traduccion de esta pagina del manual, envie un correo electronico a . FIND(1)