FIND(1)

NOMBRE
find - buscador de archivos en un árbol de directorios

SINOPSIS
find [-H] [-L] [-P] [-D debugopts] [-Olevel] [punto-de-inicio...] [expresión]

DESCRIPCIÓN
Esta página del manual documenta la versión GNU de find. find de GNU busca en el árbol de directorios en cada punto de inicio dado, evaluando la expresión dada de izquierda a derecha, según las reglas de precedencia (véase la sección 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 ningún punto de inicio, se tomará «.».

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), debería leer el capítulo «Consideraciones de Seguridad» de la documentación de findutils, que se llama Finding Files y se incluye con findutils. Ese documento también incluye muchos más detalles y análisis que esta página del manual, por lo que puede resultarle una fuente de información más útil.

OPCIONES
Las opciones -H, -L y -P controlan el tratamiento de los enlaces simbólicos. Los argumentos de la línea de órdenes 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 expresión que describe lo que se busca. Si no se especifica ninguna ruta, se utiliza el directorio actual. Si no se especifica ninguna expresión, se utiliza la expresión -print (aunque, de todas formas, probablemente debería considerar usar -print0 en su lugar).

Esta página del manual trata sobre las «opciones» dentro de la lista de expresiones. Estas opciones controlan el comportamiento de find, pero se especifican inmediatamente después del último nombre de la ruta. Las cinco opciones «reales» -H, -L, -P, -D y -O deben aparecer antes del primer nombre de la ruta, si es que aparecen. Teóricamente, se podría 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 expresión (que también empieza con «-»). Ahora bien, si un argumento de ruta empieza con «-», find lo trataría como argumento de expresión. Por lo tanto, para garantizar que todos los puntos de inicio se tomen como tales, y especialmente para evitar que los patrones comodín expandidos por el shell que realiza la llamada se traten erróneamente como argumentos de expresión, generalmente es más 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 opción GNU -files0-from para pasar puntos de inicio arbitrarios a find.

-P  No seguir enlaces simbólicos. Este es el comportamiento predeterminado. Cuando find examina o imprime información sobre archivos, y el archivo es un enlace simbólico, la información utilizada se tomará de las propiedades del propio enlace simbólico.

-L  Sigue enlaces simbólicos. Cuando find examina o imprime información sobre archivos, la información utilizada se tomará de las propiedades Del archivo al que apunta el enlace, no del enlace en sí (a menos que se trate de un enlace simbólico roto o que find no pueda examinar el archivo al que apunta). El uso de esta opción implica -noleaf. Si posteriormente se utiliza la opción -P, -noleaf seguirá vigente. Si -L está vigente y find descubre un enlace simbólico a un subdirectorio durante su búsqueda, se buscará en el subdirectorio al que apunta el enlace simbólico.

    Cuando la opción -L está activa, el predicado de -type siempre coincidirá con el tipo de archivo al que apunta un enlace simbólico, no con el enlace en sí (a menos que el enlace simbólico esté roto). Las acciones que pueden provocar la rotura de enlaces simbólicos mientras find se está 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 simbólicos, salvo durante el proceso de los argumentos de la línea de órdenes. Cuando find examina o imprime información sobre archivos, ésta se obtendrá de las propiedades del propio enlace simbólico. La única excepción a este comportamiento ocurre cuando un archivo especificado en la línea de órdenes es un enlace simbólico y este se puede resolver. En ese caso, la información se obtiene del lugar a lo que apunta el enlace (es decir, se sigue el enlace). La información sobre el enlace se utiliza como alternativa si el archivo al que apunta el enlace simbólico no se puede examinar. Si -H está en vigor y una de las rutas especificadas en la línea de órdenes es un enlace simbólico a un directorio, se examinará el contenido de dicho directorio (aunque, por supuesto, -maxdepth 0 lo impediría).

Si se especifica más de una opción entre -H, -L y -P, cada una prevalece sobre las demás; la última que aparece en la línea de comandos es la que tiene efecto. Dado que es la opción predeterminada, la opción -P debe considerarse activa a menos que se especifique -H o -L.

GNU find suele analizar los archivos durante el procesamiento de la línea de órdenes, antes de iniciarse la búsqueda. Estas opciones también afectan el procesamiento de dichos argumentos. En concreto, existen varias pruebas que comparan los archivos listados en la línea de órdenes con el archivo que estamos considerando. En cada caso, se habrá examinado el archivo especificado en la línea de órdenes y se habrán guardado algunas de sus propiedades. Si el archivo nombrado es, de hecho, un enlace simbólico y la opción -P está activa (o si no se especificaron ni -H ni -L), la información utilizada para la comparación se tomará de las propiedades del enlace simbólico. De lo contrario, se tomará 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 utilizarán las propiedades del propio enlace.

Cuando las opciones -H o -L están activas, cualquier enlace simbólico listado como argumento de -newer se desreferenciará y la marca de tiempo se tomará del archivo al que apunta el enlace simbólico. La misma consideración se aplica a -newerXY, -anewer y -cnewer.

La opción -follow tiene un efecto similar a -L, aunque surte efecto en el punto donde aparece (es decir, si no se utiliza -L, pero sí -follow, cualquier enlace simbólico que aparezca después de -follow en la línea de órdenes se desreferenciará, y los anteriores no).

-D debugopts
    Muestra información de diagnóstico; Esto puede ser útil para diagnosticar problemas que expliquen por qué find no funciona correctamente. La lista de opciones de depuración debe estar separada por comas. No se garantiza la compatibilidad de las opciones de depuración entre versiones de findutils. Para obtener una lista completa de las opciones de depuración válidas, consulte la salida de find -D help. Las opciones de depuración válidas incluyen:

    exec
        Muestra información de diagnóstico relacionada con -exec, -execdir, -ok y -okdir

    opt Muestra información de diagnóstico relacionada con la optimización del árbol de expresiones; consulte la opción -O.

    rates
        Muestra un resumen que indica la frecuencia con la que cada predicado tuvo éxito o falló.

    search
        Navega detalladamente por el árbol 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 árbol de expresiones en su forma original y optimizada.

    all Habilita todas las demás opciones de depuración (salvo help).

    help
        Explica las opciones de depuración.

-Olevel
    Habilita la optimización de consultas. El programa find reordena las pruebas para acelerar la ejecución, preservando la efectividad; es decir, los predicados con efectos secundarios no se reordenan entre sí. Las optimizaciones realizadas en cada nivel de optimización son las siguientes:

    0   Equivalente al nivel de optimización 1.

    1   Este es el nivel de optimización predeterminado y corresponde al comportamiento tradicional. Las expresiones se reordenan para que las pruebas basadas únicamente en los nombres de los archivos (por ejemplo, -name y -regex) se ejecuten primero.

    2   Las pruebas -type o -xtype se realizan después de las pruebas basadas únicamente en los nombres de los archivos, pero antes de las pruebas que requieren información del inodo. En muchas versiones modernas de Unix, los tipos de archivo se obtienen mediante readdir(), por lo que estos predicados son más rápidos 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 «/etc/mtab») al iniciar find, dicho predicado equivale a -false.

    3   En este nivel de optimización, se habilita el optimizador de consultas basado en el coste completo. El orden de las pruebas se modifica para que las pruebas más rápidas y eficientes se realicen primero y las más costosas después, si es necesario. Dentro de cada rango de coste, los predicados se evalúan antes o después según su probabilidad de éxito. Para -o, los predicados con probabilidad de éxito se evalúan antes, y para -a, los predicados con probabilidad de fallo se evalúan antes.

    El optimizador basado en costes tiene una idea fija de la probabilidad de éxito de una determinada prueba. En algunos casos, la probabilidad tiene en cuenta la naturaleza específica de la prueba (por ejemplo, se asume que -type f tiene mayor probabilidad de éxito que -type c). El optimizador basado en costes se encuentra actualmente en evaluación. Si no mejora el rendimiento de find, se eliminará. Por el contrario, las optimizaciones que demuestren ser fiables, robustas y eficaces podrán habilitarse con el tiempo en niveles de optimización más bajos. Sin embargo, el comportamiento predeterminado (es decir, el nivel de optimización 1) no se modificará en la versión 4.3.x. El conjunto de pruebas findutils ejecuta todas las pruebas en find en cada nivel de optimización y garantiza que el resultado sea el mismo.

    La reordenación 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 reordenación. Si se ejecutan en el orden -empty -readable, se emitirá un mensaje de error para los directorios ilegibles. Si se ejecutan en el orden -readable -empty, no se emitirá ningún mensaje de error. Esta es la razón por la que dicha reordenación de operaciones no se realiza en el nivel de optimización predeterminado.

EXPRESIÓN
La parte de la línea de órdenes después de la lista de puntos de inicio es la expression. Se trata de una especie de especificación de consulta que describe cómo se comparan los archivos y qué se hace con los archivos encontrados. Una expresión se compone de una secuencia de elementos:

Pruebas
    Las pruebas devuelven un valor verdadero o falso, generalmente en función de alguna propiedad del archivo que se esté considerando. La prueba -empty, por ejemplo, solo es verdadera cuando el archivo actual está vacío.

Acciones
    Las acciones tienen efectos secundarios (como mostrar algo en la salida estándar) y devuelven verdadero o falso, generalmente según su resultado. La acción -print, por ejemplo, muestra el nombre del archivo actual en la salida estándar.

Opciones globales
    Las opciones globales afectan el funcionamiento de las pruebas y acciones especificadas en cualquier parte de la línea de órdenes. Siempre devuelven verdadero. La opción -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 opción -regextype, por ejemplo, es posicional y especifica el dialecto de la expresión regular para las expresiones regulares que aparecen posteriormente en la línea de órdenes.

Operadores
    Los operadores unen los demás elementos de la expresión. Incluyen, por ejemplo, -o (que significa OR lógico) y -a (que significa AND lógico). Si falta un operador, se asume -a.

La acción -print se ejecuta en todos los archivos para los que la expresión completa es verdadera, a menos que contenga una acción distinta de -prune o -quit. Las acciones que inhiben la acción predeterminada -print son -delete, -exec, -execdir, -ok, -okdir, -fls, -fprint, -fprintf, -ls, -print y -printf.

La acción -delete también funciona como una opción (ya que implica -depth).

  OPCIONES DE POSICIÓN
Las opciones de posición siempre devuelven verdadero. Afectan únicamente a las pruebas que se realizan posteriormente en la línea de órdenes.

-daystart
    Mide los tiempos (para -amin, -atime, -cmin, -ctime, -mmin y -mtime) desde el inicio de hoy en lugar de hace 24 horas. Esta opción solo afecta a las pruebas que aparecen posteriormente en la línea de órdenes.

-follow
    Obsoleto; utilice la opción -L en su lugar. Desreferencia enlaces simbólicos. Implica -noleaf. La opción -follow solo afecta a las pruebas que aparecen después en la línea de órdenes. A menos que se defina la opción -H o -L, la posición de la opción -follow cambia el comportamiento del predicado -newer; cualquier archivo listado como argumento de -newer se desreferenciará si es un enlace simbólico. La misma consideración se aplica a -newerXY, -anewer y -cnewer. De forma similar, el predicado -type siempre coincidirá con el tipo de archivo al que apunta un enlace simbólico, 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 línea de órdenes. Para ver qué tipos de expresiones regulares se conocen, utilice -regextype help. La documentación de Texinfo (consulte CONSULTE TAMBIÉN) explica el significado y las diferencias entre los distintos tipos de expresiones regulares. Si no utiliza esta opción, find se comporta como si se hubiera especificado el tipo de expresión regular emacs.

-warn, -nowarn
    Activa o desactiva los mensajes de advertencia. Estas advertencias se aplican únicamente al uso de la línea de órdenes, no a las condiciones que find pueda encontrar al buscar directorios. El comportamiento predeterminado corresponde a -warn si la entrada estándar es una tty, y a -nowarn en caso contrario. Si se genera un mensaje de advertencia relacionado con el uso de la línea de órdenes, no afecta al estado de salida de find. Si la variable de entorno POSIXLY_CORRECT está definida y también se utiliza -warn, no se especifica qué advertencias estarán 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 línea de órdenes. Para evitar confusiones, las opciones globales deben definirse en la línea de órdenes después de la lista de puntos de inicio, justo antes de la primera prueba, opción posicional o acción. Si se especifica una opción global en otro lugar, find mostrará un mensaje de advertencia explicando que esto puede ser confuso.

Las opciones globales aparecen después de la lista de puntos de inicio, por lo que no son del mismo tipo que, por ejemplo, -L.

-d  Sinónimo 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 acción -delete también implica -depth.

-files0-from archivo
    Lee los puntos de inicio desde archivo en lugar de obtenerlos en la línea de órdenes. A diferencia de las limitaciones conocidas de pasar puntos de inicio mediante argumentos en la línea de órdenes, como la limitación en la cantidad de nombres de archivo y la ambigüedad inherente de los nombres de archivo que entran en conflicto con los nombres de las opciones, usar esta opción permite pasar de forma segura un número arbitrario de puntos de inicio a find.

    Usar esta opción y pasar puntos de inicio en la línea de órdenes es mutuamente excluyente y, por lo tanto, no está permitido simultáneamente.

    El argumento archivo es obligatorio. Se puede usar -files0-from - para leer la lista de puntos de inicio del flujo entrada estándar, por ejemplo, de una tubería. En este caso, no se pueden usar las acciones -ok y -okdir, ya que interferirían con la lectura de entrada estándar para obtener la confirmación 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 están permitidos y generarán un diagnóstico de error seguido de un código de salida distinto de cero.

    Si el archivo archivo está vacío, find no procesa ningún punto de inicio y, por lo tanto, saldrá inmediatamente después de analizar los argumentos del programa. Esto difiere de la invocación estándar, donde find asume el directorio actual como punto de inicio si no se pasa ningún argumento de ruta.

    El procesamiento de los puntos de inicio es, por lo demás, habitual, por ejemplo. find accederá 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 más de una vez en el archivo de entrada, no se especifica si se visita más de una vez. Si el archivo se modifica durante la operación de find, el resultado tampoco se especifica. Finalmente, la posición de búsqueda dentro del archivo mencionado al salir de find, ya sea con -quit o de cualquier otra forma, tampoco se especifica. Aquí, «sin especificar» significa que puede funcionar o no, o realizar alguna acción específica, y que el comportamiento puede variar según la plataforma o la versión de findutils.

-help, --help
    Muestra un sumario del modo de empleo de find y acaba.

-ignore_readdir_race
    En general, find emitirá un mensaje de error cuando no pueda crear un archivo. Si se activa esta opción 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 emitirá ningún mensaje de error. Esto también se aplica a archivos o directorios cuyos nombres se indican en la línea de órdenes. Esta opción se activa en el momento en que se lee la línea de órdenes, lo que significa que no se puede buscar una parte del sistema de archivos con esta opción activada y otra con esta opción desactivada (si es necesario, se deberán ejecutar dos veces find, uno con la opción y otro sin ella).

    Además, find con la opción -ignore_readdir_race ignorará los errores de la acción -delete si el archivo ha desaparecido desde que se leyó el directorio principal: no se emitirá un diagnóstico de error y el código de retorno de la acción -delete será verdadero.

-maxdepth niveles
    Desciende un máximo 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 número de enlaces físicos. Esta opción es necesaria al buscar sistemas de archivos que no siguen la convención de enlaces de directorios de Unix, como sistemas de archivos de CD-ROM o MS-DOS, o puntos de montaje de volúmenes AFS. Cada directorio en un sistema de archivos Unix normal tiene al menos 2 enlaces físicos: su nombre y su entrada «.». Además, 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 número de enlaces, sabe que el resto de las entradas del directorio no son directorios (archivos «hoja» en el árbol de directorios). Si solo se deben examinar los nombres de los archivos, no será necesario especificarlos; esto aumenta significativamente la velocidad de búsqueda.

-version, --version
    Muestra el número de versión de find y acaba.

-xdev
    No desciende a directorios en otros sistemas de ficheros. Vea -mount más arriba.

  COMPARACIONES
Algunas pruebas, por ejemplo, -newerXY y -samefile, permiten comparar el archivo que se está examinando con algún archivo de referencia especificado en la línea de órdenes. Al utilizar estas pruebas, la interpretación del archivo de referencia se determina mediante las opciones -H, -L y -P, así como cualquier -follow anterior. Sin embargo, el archivo de referencia solo se examina una vez, al analizar la línea de órdenes. 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 numérico 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 accedió por última vez hace menos de, más de o exactamente n minutos.

-anewer referencia
    La hora del último acceso al archivo actual es más reciente que la de la última modificación de datos del archivo referencia. Si referencia es un enlace simbólico y la opción -H o -L está activa, siempre se utiliza la hora de la última modificación de datos del archivo al que apunta.

-atime n
    El último acceso al archivo fue hace menos de, más de o exactamente n*24 horas. Cuando find calcula cuántos períodos de 24 horas hace que se accedió al archivo por última vez, se ignora cualquier fracción; por lo tanto, para que coincida con -atime +1, se debe haber accedido a un archivo hace al menos dos días.

-cmin n
    El estado del archivo se modificó por última vez hace menos de, más de o exactamente n minutos.

-cnewer referencia
    La hora del último cambio de estado del archivo actual es más reciente que la de la última modificación de datos del archivo reference. Si reference es un enlace simbólico y la opción -H o -L está activa, siempre se utiliza la hora de la última modificación de datos del archivo al que apunta.

-ctime n
    El estado del archivo se modificó por última vez hace menos de, más de o exactamente n*24 horas. Consulte los comentarios de -atime para ver cómo el redondeo afecta la interpretación de las horas de cambio del estado del archivo.

-empty
    El fichero está vacío y es o un fichero regular o un directorio.

-executable
    Concuerda con archivos ejecutables y directorios que el usuario actual puede buscar (en términos de resolución 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 engañada por servidores NFS que realizan mapeo de UID (o squashing de raíz), ya que muchos sistemas implementan access(2) en el kernel del cliente y, por lo tanto, no pueden utilizar la información de mapeo de UID almacenada en el servidor. Dado que esta prueba se basa únicamente en el resultado de la llamada al sistema access(2), no se garantiza que un archivo probado con éxito pueda ejecutarse.

-false
    Siempre da falso.

-fstype tipo
    El fichero está en un sistema de ficheros de tipo tipo. Los tipos válidos de sistemas de ficheros varían según la versión 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 dará una lista de los tipos de sistemas de ficheros reconocidos.)

-gid n
    El ID de grupo numérico del archivo es menor que, mayor que o exactamente n.

-group grupo
    El fichero pertenece al grupo grupo (se permite un GID numérico).

-ilname patrón
    Igual que -lname, pero la coincidencia no distingue entre mayúsculas y minúsculas. Si la opción -L o -follow está activa, esta prueba devuelve falso a menos que el enlace simbólico esté roto.

-iname patrón
    Igual que -name, pero la concordancia no distingue entre mayúsculas y minúsculas. Por ejemplo, los patrones «fo*» y «F??» concuerdan con los nombres de archivo «Foo», «FOO», «foo», «fOo», etc. El patrón «*foo*» también concordará con un archivo llamado «.foobar».

-inum n
    El archivo tiene un número de inodo menor que, mayor que o exactamente n. Normalmente es más fácil usar la prueba -samefile.

-ipath patrón
    Como -path, pero la concordancia no hace caso de mayúsculas ni minúsculas.

-iregex patrón
    Como -regex, pero la concordancia no hace caso de mayúsculas ni minúsculas.

-iwholename patrón
    Véase -ipath. Esta alternativa es menos portable que -ipath.

-links n
    El archivo tiene menos de, más de o exactamente n enlaces físicos.

-lname patrón
    El archivo es un enlace simbólico cuyo contenido coincide con el patrón de shell patrón. Los metacaracteres no tratan específicamente «/» ni «.». Si la opción -L o -follow está activa, esta prueba devuelve falso a menos que el enlace simbólico esté roto.

-mmin n
    Los datos del archivo se modificaron por última vez hace menos de, más de o exactamente n minutos.

-mtime n
    Los datos del archivo se modificaron por última vez hace menos de, más de o exactamente n*24 horas. Consulte los comentarios de -atime para comprender cómo el redondeo afecta la interpretación de las horas de modificación de los archivos.

-name patrón
    La base del nombre de archivo (la ruta sin los directorios principales) coincide con el patrón de shell patrón. Dado que se eliminan los directorios principales de los nombres de archivo, patrón no debe incluir una barra, ya que «-name a/b» nunca concordará con nada (y probablemente prefiera usar -path en su lugar). Una excepción ocurre cuando se usa solo una barra como patrón («-nombre /»), ya que es una cadena válida para concordar con el directorio raíz «/» (ya que el nombre base de «/» será propiamente «/»). Se muestra un aviso si se intenta pasar un patrón que contenga una barra, pero no solo una, a menos que la variable de entorno POSIXLY_CORRECT esté definida o se use la opción -nowarn.

    Para ignorar un directorio y los archivos que contiene, se usa -prune en lugar de revisar todos los archivos del árbol; un ejemplo puede verse en la descripción de esa acción. 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 función de biblioteca fnmatch(3). No olvide encerrar el patrón entre comillas para protegerlo de la expansión de shell.

-newer referencia
    La fecha de la última modificación de datos del archivo actual es más reciente que la fecha de la última modificación de datos del archivo referencia. Si referencia es un enlace simbólico y la opción -H o -L está activa, siempre se utiliza la fecha de la última modificación de datos del archivo al que apunta.

-newerXY referencia
    Se ejecuta correctamente si la marca de tiempo X del archivo considerado es más 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 creación del archivo referencia
    c | Hora de cambio del estado del inodo de referencia
    m | Hora de modificación del archivo referencia
    t | referencia se interpreta directamente como una hora.

    Algunas combinaciones no son válidas; por ejemplo, no es válido que X sea t. Algunas combinaciones no están implementadas en todos los sistemas; por ejemplo, B no es compatible con todos los sistemas. Si se define una combinación de XY no válida o no compatible, se producirá un error. Las especificaciones de hora se interpretan igual que en el caso del argumento de la opción -d de GNU fecha. Si se intenta utilizar la hora de creación 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 creación de los archivos examinados, esta prueba fallará para cualquier archivo cuya hora de nacimiento sea desconocida.

-nogroup
    Ningún grupo se corresponde con el GID numérico del fichero.

-nouser
    Ningún usuario se corresponde con el UID numérico del fichero.

-path patrón
    El nombre del fichero concuerda con el patrón del shell patrón. Los metacaracteres no tratan de forma especial a «/» o a «.»; así, por ejemplo,
    find . -path "./sr*sc"
    Muestra una entrada para un directorio llamado ./src/misc (si existe). Para ignorar todo el árbol de directorios, use -prune en lugar de comprobar cada archivo del árbol. 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 línea de órdenes. Solo tendría sentido usar una ruta absoluta si el punto de inicio relevante también es una ruta absoluta. Esto significa que esta orden nunca tendrá concordancias:
    find bar -path /foo/bar/miarchivo -print
    Find comparará el argumento de -path con la concatenación de un nombre de directorio y el nombre base del archivo que examina. Dado que la concatenación nunca termina con una barra, los argumentos de -path que terminen en una barra no coincordarán con nada (salvo quizás con un punto de inicio definido en la línea de órdenes). El predicado -path también es compatible con HP-UX find y forma parte del estándar POSIX 2008.

-perm modo
    Los bits de permiso del archivo son exactamente modo (octal o simbólico). Dado que se requiere una concordancia exacta, si desea usar este formato para modos simbólicos, podría tener que especificar una cadena de modo bastante compleja. Por ejemplo, «-perm g=w» solo concordará con archivos en modo 0020 (es decir, aquellos para los que el permiso de escritura de grupo es el único establecido). Es más 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 sección EJEMPLOS para ver algunos ejemplos ilustrativos.

-perm -modo
    Todos los bits de permiso modo están configurados para el archivo. Los modos simbólicos se aceptan en este formato, y esta es la forma habitual en que se utilizarían. Debe especificar «u», «g» u «o» si utiliza un modo simbólico. Consulte la sección EJEMPLOS para ver algunos ejemplos ilustrativos.

-perm /modo
    Cualquier bit de permiso modo está configurado para el archivo. Se aceptan modos simbólicos en este formato. Deberá definir «u», «g» u «o» si utiliza un modo simbólico. Consulte la sección EXAMPLES para ver algunos ejemplos ilustrativos. Si no se configuran bits de permiso en mode, esta prueba concordará 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 engañada por servidores NFS que realizan mapeo de UID (o root-squashing), ya que muchos sistemas implementan access(2) en el núcleo del cliente y, por lo tanto, no pueden usar la información de mapeo de UID almacenada en el servidor.

-regex patrón
    El nombre del archivo concordará con la expresión regular patrón. Se trata de una concordancia en toda la ruta, no una búsqueda. Por ejemplo, para encontrar un archivo llamado ./fubar3,, podemos usar la expresión regular «.*bar.» o «.*b.*3», pero no «f.*r3». Las expresiones regulares que find interpreta son, por defecto, expresiones regulares de Emacs, pero esto se puede cambiar con la opción -regextype.

-samefile nombre
    El archivo se refiere al mismo inodo que nombre. Cuando -L está activo, esto puede incluir enlaces simbólicos.

-size n[cwbkMG]
    El archivo utiliza menos de, más de o exactamente n unidades de espacio, redondeando al alza. Se pueden usar los siguientes sufijos:

    «b» Para bloques de 512 bytes (este es el valor predeterminado si no se usa ningún sufijo)

    «c» Para bytes

    «w» Para palabras de dos bytes

    «k» Para kibibytes (KiB, unidades de 1024 bytes)

    «M» Para mebibytes (MiB, unidades de 1024 * 1024 = 1048576 bytes)

    «G» Para gibibytes (GiB, unidades de 1024 * 1024 * 1024 = 1073741824 bytes)

    El tamaño es simplemente el miembro «st_size» de la estructura «stat» rellenada por la llamada al sistema «lstat»(o «stat»), redondeado al alza como se muestra arriba. En otras palabras, es consistente con el resultado obtenido para «ls -l». Tenga en cuenta que los especificadores de formato «%k» y «%b» de -printf gestionan los archivos dispersos de forma diferente. El sufijo «b» 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 tamaño exacto de n unidades no concordará. Tenga en cuenta que el tamaño se redondea a la siguiente unidad. Por lo tanto, -size -1M no es equivalente a -size -1048576c. El primero solo coincide con archivos vacíos, 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   tubería con nombre (FIFO)

    f   fichero regular

    l   Enlace simbólico; esto nunca es cierto si las opciones -L o -follow están activas, a menos que el enlace simbólico esté roto. Si desea buscar enlaces simbólicos cuando -L esté activo, utilice -xtype.

    s   zócalo (socket)

    D   door (Solaris)

    Para buscar más de un tipo a la vez, puede proporcionar la lista combinada de letras de tipo separadas por una coma «,» (extensión GNU).

-uid n
    El ID de usuario numérico del archivo es menor que, mayor que o exactamente n.

-used n
    Se accedió al archivo por última vez menos que, más que o exactamente n días después del último cambio de estado.

-user usuario
    El propietario del fichero es el usuario usuario (se permite un UID numérico).

-wholename patrón
    Véase -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 engañada por servidores NFS que realizan mapeo de UID (o squashing de raíz), ya que muchos sistemas implementan access(2) en el núcleo del cliente y, por lo tanto, no pueden usar la información de mapeo de UID almacenada en el servidor.

-xtype c
    Idéntico a -type, a menos que el archivo sea un enlace simbólico. Para enlaces simbólicos: si se definió la opción -H o -P, verdadero si el archivo es un enlace a un archivo de tipo c; si se especificó la opción -L, verdadero si c es «l». En otras palabras, para enlaces simbólicos, -xtype verifica el tipo de archivo que -type no verifica. Si un enlace simbólico está roto (porque el elemento al que apunta no existe o el enlace apunta a sí mismo), -xtype se comportará igual que -type.

-context patrón
    (Solo SELinux) El contexto de seguridad del archivo coincide con patrón.

  ACCIONES

-delete
    Elimina archivos o directorios; retorna verdadero si la eliminación se realiza correctamente. Si la eliminación falla, se muestra un mensaje de error y el estado de salida de find será distinto de cero (cuando finalmente salga).

    Advertencia: Recuerde que find evalúa la línea de órdenes como una expresión, por lo que al colocar -delete primero, find intentará eliminar todo lo que esté por debajo de los puntos de inicio especificados.

    El uso de la acción -delete activa automáticamente la opción -depth. Dado que -depth hace que -prune se inacive, la acción -delete no puede combinarse con -prune.

    A menudo, el usuario podría querer probar la orden find con -print antes de añadir -delete para la ejecución de la eliminación. Para evitar resultados inesperados, suele ser recomendable recordar usar -depth explícitamente durante las ejecuciones de prueba anteriores.

    La acción -delete no eliminará un directorio a menos que esté vacío.

    Junto con la opción -ignore_readdir_race, find ignorará los errores de la acción -delete si el archivo ha desaparecido desde la lectura del directorio principal: no dará error, no cambiará el código de salida a un valor distinto de cero y el código de retorno de la acción -delete será verdadero.

-exec orden ;
    Ejecuta orden; será 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 podrían necesitar ser escapadas (con «\») o entrecomilladas para protegerlas de la expansión de la shell. Consulte la sección EXAMPLES para ver ejemplos de uso de la opción -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 acción -exec; en su lugar, debería usar la opción -execdir.

-exec orden {} +
    Esta variante de la acción -exec ejecuta la orden especificada en los archivos seleccionados, pero la línea de órdenes se construye añadiendo el nombre de cada archivo seleccionado al final; el número total de invocaciones de la orden será mucho menor que el número de archivos concordantes. La línea de órdenes se construye de forma muy similar a como xargs construye sus líneas de órdenes. 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 invocación 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 órdenes pendientes no se ejecuten. Por esta razón, -exec mi-orden ... {} + -quit podría 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 inició find. Al igual que con -exec, se deben entrecomillar {} si se invoca find desde una shell. Este método es mucho más seguro para invocar órdenes, ya que evita condiciones de carrera durante la resolución de las rutas a los archivos concordantes. Al igual que con la acción -exec, la forma «+» de -execdir generará una línea de órdenes para procesar más de un archivo concordante, pero cualquier invocación de orden solo listará los archivos que existan en el mismo subdirectorio. Si usa esta opción, 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 ejecutará -execdir. Lo mismo se aplica a tener entradas en PATH que estén vacías o que no sean nombres de directorio absolutos. Si alguna invocación 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 órdenes pendientes podrían no ejecutarse en absoluto. El resultado de la acción depende de si se está utilizando la variante + o ;; -execdir orden {} + siempre devuelve verdadero, mientras que -execdir orden {} ; devuelverá 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 sección NOMBRES DE ARCHIVO INUSUALES para obtener información sobre cómo 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 específica; se refieren a la salida estándar y a la salida de error estándar, respectivamente. El archivo de salida siempre se crea, incluso si el predicado nunca concuerda. Consulte la sección NOMBRES DE ARCHIVO INUSUALES para obtener información sobre cómo 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 sección NOMBRES DE ARCHIVO INUSUALES para obtener información sobre cómo 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 sección NOMBRES DE ARCHIVO INUSUALES para obtener información sobre cómo se gestionan los caracteres inusuales en los nombres de archivo.

-ls Verdadero; muestra el archivo actual en formato ls -dils por la salida estándar. 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 sección NOMBRES DE ARCHIVO INUSUALES para obtener información sobre cómo se gestionan los caracteres inusuales en los nombres de archivo.

-ok orden ;
    Similar a -exec, pero preguntando primero al usuario. Si el usuario acepta, ejecutará la orden y sino devuelve falso. Si se ejecuta la orden, su entrada estándar se redirige desde /dev/null. Esta acción no puede definirse junto con la opción -files0-from.

    La respuesta a la solicitud se compara con un par de expresiones regulares para determinar si es afirmativa o negativa. Esta expresión regular se obtiene del sistema si la variable de entorno POSIXLY_CORRECT está establecida o, en caso contrario, de las traducciones de mensajes de find. Si el sistema no tiene una definición adecuada, se utilizará la propia definición de find. En cualquier caso, la interpretación de la expresión regular se verá 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 estándar se redirige desde /dev/null. Esta acción no puede definirse junto con la opción -files0-from.

-print
    Verdadero; muestra el nombre completo del archivo por la salida estándar, seguido de un salto de línea. Si está canalizando la salida de find a otro programa y existe posibilidad de que los archivos que busca contengan un salto de línea, debería considerar seriamente usar la opción -print0 en lugar de -print. Consulte la sección NOMBRES DE ARCHIVO INUSUALES para obtener información sobre la gestión de los caracteres inusuales en los nombres de archivo.

-print0
    Verdadero; muestra el nombre completo del archivo en la salida estándar, seguido de un carácter nulo (en lugar del salto de línea que utiliza -print). Esto permite que los nombres de archivo que contienen saltos de línea u otros tipos de espacios en blanco sean interpretados correctamente por los programas que procesan la salida de find. Esta opción corresponde a la opción -0 de xargs. Verdadero; muestra formato en la salida estándar, interpretando los escapes «\» y las directivas «%». El ancho y la precisión de los campos se pueden especificar como con la función 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 deberían. Esto también significa que el indicador «-» funciona alineando los campos a la izquierda). A diferencia de -print, -printf no añade una nueva línea al final de la cadena. Los escapes y las directivas son:

-printf formato
    Verdadero; muestra formato en la salida estándar, interpretando los escapes «\» y las directivas «%». El ancho y la precisión de los campos se pueden definir igual que en el caso de la función 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 función como se espera. Esto también significa que el indicador `-' funciona (alinea los campos a la izquierda). A diferencia de -print, -printf no añade una nueva línea al final de la cadena. Los escapes y las directivas son:

    \a  La campana de alarma.

    \b  Espacio atrás.

    \c  Para la impresión de este formato inmediatamente y vuelca el búfer de salida.

    \f  Salto de página.

    \n  Nueva línea.

    \r  Retorno de carro.

    \t  Tabulador horizontal.

    \v  Tabulador vertical.

    \0  ASCII NULL

    \\  Una barra inclinada inversa literal (`\').

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

    Un carácter «\» seguido por otro cualquiera distinto de los anteriores se trata como un carácter ordinario, asi que se muestran ambos.

    %%  Un signo de porcentaje literal «%».

    %a  La hora del último acceso al archivo en el formato devuelto por la función C ctime(3).

    %Ak La hora del último acceso al archivo en el formato definido por k, que será `@' o una directiva para la función C strftime(3). A continuación, puede verse una lista incompleta de posibles valores para k. Consulte la documentación de strftime(3) la lista completa. Es posible que algunos caracteres de especificación de conversión no estén disponibles en todos los sistemas debido a diferencias en la implementación de la función 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 representación 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 extensión 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   Representación de la hora de la configuración 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 día de la semana (Dom..Sáb)

        A   nombre local completo del día de la semana, longitud variable (Domingo..Sábado)

        b   nombre local abreviado del mes (Ene..Dic)

        B   nombre local completo del mes, longitud variable (Enero..Diciembre)

        c   Fecha y hora de la configuración regional (sáb 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   día del mes (01..31)

        D   fecha (mm/dd/aa)

        F   fecha (aaaa-mm-dd)

        h   lo mismo que b

        j   día del año (juliano) (001..366)

        m   mes numérico (01..12)

        U   número de la semana del año con el Domingo como primer día de la semana (00..53)

        w   día de la semana, numérico (0..6)

        W   número de la semana del año como el Lunes como el primer día de la semana (00..53)

        x   representación local de la fecha (dd/mm/aa)

        y   los últimos dos dígitos del año (00..99)

        Y   año (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 múltiplos del tamaño de bloque del sistema de archivos, este valor suele ser mayor que %s/512, pero también puede ser menor si el archivo está disperso.

    %Bk Hora de «nacimiento» del archivo, es decir: su hora de creación, en el formato definido por k, idéntico que para %A. Esta directiva genera una cadena vacía si el sistema operativo o el sistema de archivos subyacente no admite horas de nacimiento.

    %c  El tiempo del último cambio del estado del fichero en el formato devuelto por la función de C ctime(3).

    %Ck El tiempo del último cambio del estado del fichero en el formato especificado por k, que es el mismo que para %A.

    %d  Profundidad del archivo en el árbol de directorios; 0 significa que el archivo es un punto de partida.

    %D  El número 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 último elemento). Para /, el resultado será `/'. Consulte la sección EXAMPLES para ver un ejemplo.

    %F  Tipo del sistema de ficheros donde está el fichero; este valor puede emplearse para -fstype.

    %g  El nombre de grupo al que pertenece el fichero, o el GID numérico si el grupo no tiene nombre.

    %G  El GID numérico del grupo al que pertenece el fichero.

    %h  Nombre del directorio: los directorios principales del nombre del archivo (todos menos el último 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 vacía. Consulte la sección EXAMPLES para ver un ejemplo.

    %H  Punto de inicio bajo el cual se encontró el archivo.

    %i  El número-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 múltiplos del tamaño de bloque del sistema de archivos, este valor suele ser mayor que %s/1024, pero también puede ser menor si el archivo está disperso.

    %l  El objeto de un enlace simbólico (la cadena vacía si el fichero no es un enlace simbólico).

    %m  Bits de permiso del archivo (en formato octal). Esta opción utiliza los números «tradicionales» que utilizan la mayoría de las implementaciones de Unix, pero si su implementación particular utiliza un orden inusual de bits de permisos octales, observará una diferencia entre el valor real del modo del archivo y la salida de %m. Normalmente, querrá un cero a la izquierda de este número; para ello, debe usar la opción # (como, por ejemplo, `%#m').

    %M  Permisos del archivo (en formato simbólico, como para ls). Compatible con findutils 4.2.5 y posteriores.

    %n  El número 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 encontró eliminado.

    %s  El tamaño del fichero en bytes.

    %S  Dispersión del archivo. Se calcula como (BLOCKSIZE*st_blocks / st_size). El valor exacto que obtendrá para un archivo normal de cierta longitud depende del sistema. Sin embargo, normalmente los archivos dispersos tendrán valores menores a 1.0, y los archivos que usan bloques indirectos pueden tener un valor mayor a 1.0. En general, el número 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 tamaño del archivo es cero, el valor mostrado no está definido. En sistemas que no admiten st_blocks, se asume que la dispersión de un archivo es 1.0.

    %t  El tiempo de última modificación del fichero en el formato devuelto por la función de C ctime(3).

    %Tk El tiempo de última modificación 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 numérico del propietario del fichero.

    %y  Tipo de archivo (como en ls -l), U=tipo desconocido (no debería suceder).

    %Y  Tipo de archivo (como %y), más el seguimiento de enlaces simbólicos: «L»=bucle, «N»=inexistente, «?» para cualquier otro error al determinar el tipo del destino de un enlace simbólico.

    %Z  (Solo SELinux) Contexto de seguridad del archivo.

    %{ %[ %(
        Reservado para un uso futuro.

    El carácter «%» seguido de cualquier otro carácter se descarta, pero el otro carácter se muestra (no confíe demasiado en ello, ya que podrían añadirse más caracteres de formato). Un «%» al final del argumento de formato causa un comportamiento errático, al no haber ningún carácter posterior. En ciertas configuraciones regionales, puede ocultar las llaves de la puerta, mientras que en otras puede eliminar la última página de la novela que está leyendo.

    Las directivas %m y %d admiten los indicadores #, 0 y +, pero el resto de directivas no, incluso si muestran números. Las directivas numéricas que no admiten estos indicadores son: G, U, b, D, k y n. El indicador de formato «-» sí se admite y cambia la alineación de un campo de justificado a la derecha (predeterminado) a justificado a la izquierda.

    Consulte la sección NOMBRES DE ARCHIVO INUSUALES para obtener información acerca de la gestión de caracteres inusuales en los nombres de archivo.

-prune
    Verdadero; Si el archivo es un directorio, no se accede a él. Si se indica -depth, -prune no tendrá efecto. Dado que -delete implica -depth, no es de interés 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 demás 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 ningún proceso hijo en ejecución. Cualquier línea de órdenes generada por -exec ... + o -execdir ... + se invoca antes de salir del programa. Después de ejecutar -quit, no se procesarán más archivos especificados en la línea de órdenes. Por ejemplo, «find /tmp/foo /tmp/bar -print -quit» mostrará solo «/tmp/foo».
    Un uso común de «-quit» es detener la búsqueda 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 paréntesis son específicos de la shell, normalmente es necesario entrecomillarlos. Muchos de los ejemplos de esta página del manual utilizan barras invertidas para este propósito: «\(...\)» en lugar de «(...)».

! expr
    Verdadero si expr es falso. Este carácter también suele necesitar protección para evitar que la shell lo interprete.

-not expr
    Igual que «!` expr», pero no compatible con POSIX.

expr1 expr2
    Dos expresiones consecutivas se consideran unidas mediante un -a implícito; expr2 no se evalúa 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 evalúa 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 evalúan siempre. El valor de expr1 se descarta; el valor de la lista es el valor de expr2. El operador de coma puede ser útil para buscar varios tipos de elementos, pero recorriendo la jerarquía del sistema de archivos solo una vez. La acción -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 explícito entre ellas) o si tiene mayor precedencia que -o. Esto significa que find . -name archivo-a -o -name archivo-b -print nunca mostrará 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, tamaños, fechas de modificación, etc. Los nombres de archivo son un problema potencial, ya que pueden contener cualquier carácter 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 configuración de las teclas de función en algunos terminales). Los caracteres inusuales se gestionan de forma diferente según las distintas acciones, como se describe a continuación.

-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 están 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 están 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 línea, ya que los nombres de archivo pueden contener espacios en blanco y caracteres de nueva línea. La variable de entorno LC_CTYPE se utiliza para determinar qué 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 podrían tener nombres arbitrarios, debería considerar usar -print0 en lugar de -print.

Las acciones -ok y -okdir muestran el nombre del archivo actual tal cual. Esto podría cambiar en futuras versiones.

CONFORMIDAD CON LOS ESTÁNDARES
Si se desea una conformidad más estricta con el estándar POSIX, deberá definirse la variable de entorno POSIXLY_CORRECT. Las siguientes opciones se definen en el estándar POSIX (IEEE Std 1003.1-2008, edición 2016):

-H  Esta opción es compatible.

-L  Esta opción es compatible.

-name
    Esta opción es compatible, pero la conformidad con POSIX depende de la conformidad con POSIX de la función 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 interpretación IEEE PASC 126 lo exige. Esto supone un cambio con respecto a versiones anteriores de findutils.

-type
    Compatible. POSIX define «b», «c», «d», «l», «p», «f» y «s». La versión de GNU también admite «D», que representa una puerta, cuando el sistema operativo la proporciona. Además, GNU find permite definir varios tipos a la vez en una lista separada por comas.

-ok Compatible. La interpretación de la respuesta se basa en los patrones «sí» y «no» seleccionados al configurar la variable de entorno LC_MESSAGES. Cuando se configura la variable de entorno POSIXLY_CORRECT, estos patrones se toman de la definición del sistema de una respuesta positiva (sí) o negativa (no). Consulte la documentación del sistema para nl_langinfo(3), en particular YESEXPR y NOEXPR. Si no está definida POSIXLY_CORRECT, los patrones se toman del propio catálogo de mensajes de find.

-newer
    Compatible. Si el archivo definido es un enlace simbólico, siempre se desreferencia. Esto supone un cambio respecto al comportamiento anterior, que solía tomar la hora relevante del enlace simbólico; consulte la sección HISTORIAL a continuación.

-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 válidos 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 estándar POSIX define los paréntesis «(», «)», la negación «!» y los operadores lógicos AND/OR -a y -o.

Todas las demás opciones, predicados, expresiones, etc., son extensiones del estándar POSIX. Sin embargo, muchas de estas extensiones no son exclusivas de GNU find.

El estándar POSIX exige que find detecte bucles:

    find deberá detectar bucles infinitos. Es decir, si entra en un directorio previamente visitado que es ancestro del último archivo encontrado. Al detectar un bucle infinito, find mostrará un mensaje de diagnóstico en la salida de error estándar y recuperará su posición en la jerarquía o finalizará.

GNU find cumple con estos requisitos. El número 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 emisión de un mensaje de diagnóstico. Aunque este comportamiento puede resultar algo confuso, es improbable que alguien dependa de él. Si la optimización de páginas se ha desactivado con -noleaf, la entrada del directorio siempre se examinará y se mostrará el mensaje de diagnóstico cuando corresponda. Los enlaces simbólicos no pueden utilizarse para crear ciclos del sistema de archivos como tales, pero si se utilizan las opciones -L o -follow, se emitirá un mensaje de diagnóstico cuando find encuentre un bucle de enlaces simbólicos. Al igual que con los bucles que contienen enlaces físicos, la optimización de páginas suele implicar que find sabe que no necesita llamar a stat() ni a chdir() en el enlace simbólico, por lo que este diagnóstico no suele ser necesario.

La opción -d es compatible con varios sistemas BSD, pero se recomienda utilizar la opción -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 definición del estándar POSIX.

VARIABLES DE ENTORNO

LANG
    Proporciona un valor predeterminado para las variables de internacionalización que no están definidas o son nulas.

LC_ALL
    Si se define con un valor de cadena no vacío, anula los valores de todas las demás variables de internacionalización.

LC_COLLATE
    El estándar POSIX define que esta variable afecta la concordancia de patrones que se utilizará para la opción -name. GNU find utiliza la función de biblioteca fnmatch(3), por lo que la compatibilidad con LC_COLLATE depende de la biblioteca del sistema. Esta variable también afecta la interpretación de la respuesta a -ok; mientras que la variable LC_MESSAGES selecciona el patrón utilizado para interpretar la respuesta a -ok, la interpretación de cualquier expresión entre corchetes en el patrón se verá afectada por LC_COLLATE.

LC_CTYPE
    Esta variable afecta al tratamiento de las clases de caracteres utilizadas en expresiones regulares y también con la prueba -name, si la función de fnmatch(3) del sistema la admite. Esta variable también afecta a la interpretación 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 también afecta qué caracteres se consideran no imprimibles al imprimir nombres de archivo; consulte la sección NOMBRES DE ARCHIVO INUSUALES.

LC_MESSAGES
    Determina la configuración regional que se utilizará para los mensajes internacionalizados. Si la variable de entorno POSIXLY_CORRECT está configurada, también determina la interpretación de la respuesta a la solicitud generada por la acción -ok.

NLSPATH
    Determina la ubicación de los catálogos de mensajes de internacionalización.

PATH
    Afecta a los directorios en los que se buscan los ejecutables invocados por -exec, -execdir, -ok y -okdir.

POSIXLY_CORRECT
    Determina el tamaño de bloque utilizado por -ls y -fls. Si POSIXLY_CORRECT está configurada, los bloques son unidades de 512 bytes. Sino, son unidades de 1024 bytes.

    Configurar esta variable también desactiva los mensajes de advertencia (es decir, implica -nowarn) por defecto, ya que POSIX requiere que, además de la salida de -ok, todos los mensajes impresos en stderr sean de diagnóstico y su estado de salida sea distinto de cero.

    Cuando POSIXLY_CORRECT no está definido, -perm +zzz se trata igual que -perm /zzz si +zzz no es un modo simbólico válido. Cuando POSIXLY_CORRECT está definido, estas construcciones se tratan como un error.

    Cuando POSIXLY_CORRECT está definido, la respuesta a la solicitud generada por la acción -ok se interpreta según el catálogo de mensajes del sistema, en lugar de según 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

  Método simple «find|xargs»

•   Busca archivos llamados core en el directorio /tmp o debajo de él y los elimína.

    $ find /tmp -name core -type f -print | xargs /bin/rm -f

    Tenga en cuenta que esto no funcionará correctamente si hay nombres de archivo que contengan saltos de línea, comillas simples o dobles, o espacios.

  Método más seguro: «find -print0 | xargs -0»

•   Buscar archivos llamados core en el directorio /tmp o debajo de él 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 línea 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 aún existe una carrera entre el momento en que find recorre la jerarquía 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

•   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 vacíos 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 estándar, es decir: desde la tubería; y -maxdepth 0 garantiza que solo se examinen explícitamente 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

•   Ejecuta archivo en cada archivo dentro o debajo del directorio actual.

    $ find . -type f -exec file '{}' \;

    Observe que las llaves están 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, también se podrían haber usado comillas simples.

En muchos casos, se podría preferir la sintaxis `-exec ... +` o, mejor aún, `-execdir ... +` por razones de rendimiento y seguridad.

  Recorre el sistema de archivos una sola vez - para dos acciones diferentes

•   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 carácter de continuación de línea '\') en las dos primeras líneas para indicar a la shell que continúe leyendo la orden en la siguiente.

  Búsqueda de archivos por antigüedad

•   Buscará archivos en su directorio personal que se hayan modificado en las últimas veinticuatro horas.

    $ find $HOME -mtime 0

    Esta orden funciona así porque el tiempo transcurrido desde la última modificación de cada archivo se divide entre 24 horas y el resto se descarta. Esto significa que para que coincida con -mtime 0, un archivo deberá haber tenido una modificación anterior de hace menos de 24 horas.

  Búsqueda de archivos por permisos

•   Busca archivos ejecutables pero no legibles.

    $ find /sbin /usr/sbin -executable \! -readable -print

•   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 buscarán.

•   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 ejecución).

    $ find . -perm -664

    Esto buscará un archivo con modo 0777, por ejemplo.

•   Busca archivos con permisos de escritura para alguien (su propietario, su grupo o cualquier otra persona).

    $ find . -perm /222

•   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 órdenes hacen lo mismo, la primera usa la representación octal del modo de archivo y las otras dos usan la forma simbólica. No es necesario que los archivos tengan permisos de escritura tanto para el propietario como para el grupo, con uno de los dos sirve.

•   Busca archivos con permisos de escritura tanto para el propietario como para el grupo.

    $ find . -perm -220
    $ find . -perm -g+w,u+w

    Ambas órdenes hacen lo mismo.

•   Búsqueda más elaborada de permisos.

    $ find . -perm -444 -perm /222 \! -perm /111
    $ find . -perm -a+r -perm /a+w \! -perm /a+x

    Estas dos órdenes 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: omisión de archivos y subdirectorios

•   Copia el contenido de /source-dir a /dest-dir, pero omite los archivos y directorios llamados .snapshot (y todo lo que contengan). También 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 construcción -prune -o \( ... -print0 \) es bastante común. La idea es que la expresión anterior a -prune coincida con los elementos que se van a recortar («prune»). Sin embargo, la acción -prune devuelve verdadero, por lo que la siguiente -o garantiza que el lado derecho se evalúe solo para los directorios no recortados (el contenido de esos directorios ni siquiera se visita, por lo que su contenido es irrelevante). La expresión del lado derecho de -o está entre paréntesis solo para mayor claridad. Enfatiza que la acción -print0 se ejecuta solo para los elementos a los que no se les aplicó -prune. Dado que la condición «and» predeterminada entre pruebas tiene más prevalencia que -o, esta es la predeterminada de todos modos, pero los paréntesis ayudan a clarificar lo que sucede.

•   Dado el siguiente directorio De los proyectos y sus directorios SCM administrativos asociados, realiza una búsqueda eficiente de las raíces 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 búsqueda de directorios hermanos (project2 y project3).

  Otros ejemplos útiles

•   Búsqueda de varios tipos de archivo

    $ find /tmp -type f,d,l

    Buscamos archivos, directorios y enlaces simbólicos en el directorio /tmp pasando estos tipos como una lista separada por comas (extensión GNU), que por lo demás es equivalente a la opción más larga, pero más portable:

    $ find /tmp \( -type f -o -type d -o -type l \)

•   Busca archivos con el nombre concreto needle y se detiene inmediatamente al encontrar el primero.

    $ find / -name needle -print -quit

•   Demuestra la interpretación de las directivas de formato %f y %h de la acción -printf para algunos casos especiales. A continuación, 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 finalizará con el estado 0 si todos los archivos se procesan correctamente, y mayor que 0 si se produjeron errores. Esta descripción 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 versión de find se publicó en la versión 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 interpretación 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 resolución de nanosegundos se implementaron en findutils-4.3.3.

A partir de findutils-4.3.11, la acción -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 veía afectado por el fallo de -delete.
Característica | Añadido en | También 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 eliminó en findutils-4.5.12, en favor de -perm /MODE. La sintaxis +MODE había 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 mostrará 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 ningún 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 patrón *.c a más de un nombre de archivo existente en el directorio actual y pasar los nombres de archivo resultantes en la línea de órdenes a find del siguiente modo:
find . -name frcode.c locate.c word_io.c -print
Ese orden, por supuesto, no funcionará, ya que el predicado -name solo permite un patrón como argumento. En lugar de hacerlo de esta manera, debería encerrar el patrón entre comillas o escapar el comodín, permitiendo así que find use el patrón con el comodín durante la búsqueda 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 estándar POSIX define para find, que, por lo tanto, no se pueden solucionar. Por ejemplo, la acción -exec es inherentemente insegura, y debería usarse -execdir en su lugar.

La variable de entorno LC_COLLATE no afecta la acción -ok.

INFORMAR DE ERRORES
Ayuda en línea de GNU Foreutils: <https://www.gnu.org/software/findutils/#get-help>
Informe cualquier error de traducción a <https://translationproject.org/team/es.html>

Informe cualquier otro problema mediante el formulario del rastreador de errores de GNU Savannah:
    <https://savannah.gnu.org/bugs/?group=findutils>
Los temas generales sobre el paquete GNU findutils se tratan en la lista de correo bug-findutils:
    <https://lists.gnu.org/mailman/listinfo/bug-findutils>

COPYRIGHT
Copyright © 1990–2024 Free Software Foundation, Inc. Licencia GPLv3+: GNU GPL versión 3 o posterior <https://gnu.org/licenses/gpl.html>.
Esto es software libre: usted es libre de cambiarlo y redistribuirlo. NO HAY GARANTÍA, en la medida permitida por la legislación.

VÉASE TAMBIÉN
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)

Documentación completa: https://www.gnu.org/software/findutils/find
también en el propio equipo ejecutando: info find

TRADUCCIÓN
La traducción al español de esta página del manual fue creada por Gerardo Aburruzaga García <gerardo.aburruzaga@uca.es> y Marcos Fouces <marcos@debian.org>

Esta traducción es documentación libre; lea la GNU General Public License Version 3 (https://www.gnu.org/licenses/gpl-3.0.html) o posterior con respecto a las condiciones de copyright. No existe NINGUNA RESPONSABILIDAD.

Si encuentra algún error en la traducción de esta página del manual, envíe un correo electrónico a debian-l10n-spanish@lists.debian.org.