Manuales para la línea de comandos

Man » Manual de find en línea - documentación detallada en línea para la página man de find

🌍
find - busca archivos en una jerarquía de directorios

SINOPSIS

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

DESCRIPCIÓN

Esta página de manual documenta la versión GNU de find. GNU find busca en el árbol de directorios que comienza en cada punto de inicio dado evaluando la expresión dada de izquierda a derecha, de acuerdo con las reglas de precedencia (vea la sección OPERADORES), hasta que el resultado se conozca (el lado izquierdo de las operaciones "y" es falso, verdadero para "o"), en cuyo punto find pasa al siguiente nombre de archivo. Si no se especifica ningún punto de inicio, se asume `.'.

Si está utilizando find en un entorno donde la seguridad es importante (por ejemplo, si lo está utilizando para buscar en directorios que son escribibles por otros usuarios), debe leer el capítulo `Consideraciones de seguridad' de la documentación de findutils, que se llama Finding Files y viene con findutils. Ese documento también incluye muchos más detalles y discusiones que esta página de manual, por lo que puede encontrarlo como 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 comandos que siguen a estos se toman como nombres de archivos o directorios que se examinarán, hasta el primer argumento que comienza con `-\', o el argumento `('\ o `!'. Ese argumento y cualquier argumento posterior se toman como la expresión que describe lo que se va a buscar. Si no se proporcionan rutas, se utiliza el directorio actual. Si no se proporciona ninguna expresión, se utiliza la expresión -print (pero probablemente debería considerar usar -print0 en su lugar).

Esta página de manual habla de `opciones' dentro de la lista de expresiones. Estas opciones controlan el comportamiento de find, pero se especifican inmediatamente después del último nombre de ruta. Las cinco opciones `reales', -H, -L, -P, -D y -O, deben aparecer antes del primer nombre de ruta, si es que aparecen. Un doble guión -- podría, en teoría, utilizarse para señalar que cualquier argumento restante no es una opción, pero esto realmente no funciona debido a la forma en que find determina el final de los argumentos de ruta siguientes: lo hace leyendo hasta que llega un argumento de expresión (que también comienza con un -'). Ahora, si un argumento de ruta comenzara con un-', entonces find lo trataría como un argumento de expresión en su lugar. Por lo tanto, para garantizar que todos los puntos de inicio se tomen como tales, y especialmente para evitar que los patrones de comodín expandidos por el shell de llamada se traten erróneamente como argumentos de expresión, generalmente es más seguro prefijar los comodines o los nombres de ruta dudosos con `./' o utilizar nombres de ruta absolutos que comiencen con `/'. Alternativamente, generalmente es seguro, aunque no es portátil, utilizar la opción GNU -files0-from para pasar puntos de inicio arbitrarios a find.


-P     No seguir nunca los 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 deberá obtenerse de las propiedades del propio enlace simbólico.

-L     Seguir los enlaces simbólicos. Cuando `find` examina o imprime información sobre archivos, la información utilizada deberá obtenerse de las propiedades del archivo al que apunta el enlace, no del propio enlace (a menos que sea un enlace simbólico roto o `find` no pueda examinar el archivo al que apunta el enlace). El uso de esta opción implica -noleaf. Si más adelante se utiliza la opción -P, -noleaf seguirá estando en efecto. Si -L está en efecto y `find` descubre un enlace simbólico a un subdirectorio durante su búsqueda, se examinará el subdirectorio al que apunta el enlace simbólico.

Cuando la opción -L está en efecto, el predicado -type siempre coincidirá con el tipo del archivo al que apunta un enlace simbólico en lugar del propio enlace (a menos que el enlace simbólico esté roto). Las acciones que pueden provocar que los enlaces simbólicos se rompan mientras find se está ejecutando (por ejemplo, -delete) pueden dar lugar a un comportamiento confuso. El uso de -L hace que los predicados -lname y -ilname siempre devuelvan falso.

-H     No seguir los enlaces simbólicos, excepto al procesar los argumentos de la línea de comandos. Cuando `find` examina o imprime información sobre archivos, la información utilizada deberá obtenerse de las propiedades del propio enlace simbólico. La única excepción a este comportamiento es cuando un archivo especificado en la línea de comandos es un enlace simbólico y el enlace se puede resolver. En esa situación, la información utilizada se obtiene de aquello a lo que apunta el enlace (es decir, el enlace se sigue). La información sobre el propio enlace se utiliza como alternativa si no se puede examinar el archivo al que apunta el enlace simbólico. Si -H está en efecto y una de las rutas especificadas en la línea de comandos es un enlace simbólico a un directorio, se examinará el contenido de ese directorio (aunque, por supuesto, -maxdepth 0 lo evitaría).

Si se especifica más de una de las opciones -H, -L y -P, cada una anula a las demás; la última que aparece en la línea de comandos es la que tiene efecto. Dado que es el valor predeterminado, se debe considerar que la opción -P está en efecto a menos que se especifique -H o -L.

GNU find examina con frecuencia archivos durante el procesamiento de la propia línea de comandos, antes de que comience cualquier búsqueda. Estas opciones también afectan a cómo se procesan esos argumentos. Específicamente, hay una serie de pruebas que comparan los archivos enumerados en la línea de comandos con un archivo que estamos considerando actualmente. En cada caso, el archivo especificado en la línea de comandos se habrá examinado y se habrán guardado algunas de sus propiedades. Si el archivo denominado es en realidad un enlace simbólico, y la opción -P está en efecto (o si no se especificó ni -H ni -L), la información utilizada para la comparación se obtendrá de las propiedades del propio enlace simbólico. De lo contrario, se obtendrá 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 en efecto, cualquier enlace simbólico que se liste como argumento de -newer se seguirá, 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 entra en vigor en el punto en que aparece (es decir, si no se utiliza -L, pero se utiliza -follow, cualquier enlace simbólico que aparezca después de -follow en la línea de comandos se seguirá, y los que estén antes no).

-D debugopts
Imprime información de diagnóstico; esto puede ser útil para diagnosticar problemas sobre por qué find no está haciendo lo que se espera. La lista de opciones de depuración debe estar separada por comas. La compatibilidad de las opciones de depuración no está garantizada entre las 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    Imprime información de diagnóstico relacionada con la optimización del árbol de expresiones; consulte la opción -O.

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

search Navega por el árbol de directorios de forma detallada.

stat   Imprime mensajes a medida que se examinan los archivos con las llamadas al sistema stat y lstat. El programa find intenta minimizar estas llamadas.

tree   Muestra el árbol de expresiones en su forma original y optimizada.

all    Habilita todas las demás opciones de depuración (pero no 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 y, al mismo tiempo, preservar el efecto general; es decir, los predicados con efectos secundarios no se reordenan entre sí. Las optimizaciones que se realizan 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 de modo que las pruebas que se basan únicamente en los nombres de los archivos (por ejemplo, -name y -regex) se realicen primero.

2     Cualquier prueba de -type o -xtype se realiza después de cualquier prueba que se base únicamente en los nombres de los archivos, pero antes de cualquier prueba que requiera información del inodo. En muchas versiones modernas de Unix, los tipos de archivo se devuelven mediante readdir(), por lo que estos predicados son más rápidos de evaluar que los predicados que primero deben realizar stat del archivo. Si utiliza el predicado -fstype FOO y especifica un tipo de sistema de archivos FOO que no se conoce (es decir, que no está presente en /etc/mtab) en el momento en que se inicia find, ese predicado es equivalente a -false.

3 En este nivel de optimización, se habilita el optimizador de consultas basado en costos completo.
El orden de las pruebas se modifica para que primero se realicen las pruebas rápidas (es decir, de bajo costo) y, si es necesario, las pruebas más costosas más adelante. Dentro de cada banda de costo,
los predicados se evalúan antes o después según si es probable que tengan éxito o no. Para -o, los predicados que probablemente tendrán éxito se evalúan antes, y para -a, los predicados que probablemente fallarán se evalúan antes.

El optimizador basado en costos tiene una idea fija de la probabilidad de éxito de cualquier prueba. En algunos casos, la probabilidad tiene en cuenta la naturaleza específica de la prueba (por ejemplo, se supone que -type f tiene más probabilidades de éxito que -type c). Actualmente se está evaluando el optimizador basado en costos. Si no mejora realmente el rendimiento de find, se eliminará de nuevo. Por el contrario, las optimizaciones que demuestren ser confiables, sólidas y efectivas pueden habilitarse en niveles de optimización más bajos con el tiempo. Sin embargo, el comportamiento predeterminado (es decir, el nivel de optimización 1) no cambiará en la serie de versiones 4.3.x. El conjunto de pruebas de findutils ejecuta todas las pruebas en find en cada nivel de optimización y se asegura de que el resultado sea el mismo.

El reordenamiento de las operaciones realizadas por el optimizador basado en costos puede dar como resultado cambios de comportamiento visibles para el usuario. Por ejemplo, los predicados -readable y -empty son sensibles al reordenamiento. Si se ejecutan en el orden -empty -readable, se mostrará un mensaje de error para los directorios ilegibles. Si se ejecutan en el orden -readable -empty, no se mostrará ningún mensaje de error. Esta es la razón por la que no se realiza este tipo de reordenamiento de operaciones en el nivel de optimización predeterminado.

EXPRESIÓN

La parte de la línea de comandos después de la lista de puntos de inicio es la expresión. Esta es una forma de especificación de consulta que describe cómo coincidimos con los archivos y qué hacemos con los archivos que se encontraron. Una expresión está compuesta por una secuencia de elementos:

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

Acciones Las acciones tienen efectos secundarios (como imprimir algo en la salida estándar) y devuelven verdadero o falso, generalmente en función de si tienen éxito o no. Por ejemplo, la acción -print imprime el nombre del archivo actual en la salida estándar.

Opciones globales Las opciones globales afectan el funcionamiento de las pruebas y las acciones especificadas en cualquier parte de la línea de comandos. Las opciones globales siempre devuelven verdadero. Por ejemplo, la opción -depth hace que find recorra el sistema de archivos en un orden de recorrido en profundidad.

Opciones posicionales Las opciones posicionales solo afectan a las pruebas o acciones que las siguen. Las opciones posicionales siempre devuelven verdadero. Por ejemplo, la opción -regextype es posicional y especifica el dialecto de expresiones regulares para las expresiones regulares que aparecen más adelante en la línea de comandos.


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

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

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

OPCIONES POSICIONALES

Las opciones posicionales siempre devuelven verdadero. Solo afectan a las pruebas que aparecen más adelante en la línea de comandos.

-daystart

Mide los tiempos (para -amin, -atime, -cmin, -ctime, -mmin y -mtime) desde el principio del día actual en lugar de desde hace 24 horas. Esta opción solo afecta a las pruebas que aparecen más adelante en la línea de comandos.

-follow

Obsoleto; utilice la opción -L en su lugar. Desreferencia los enlaces simbólicos. Implica -noleaf. La opción -follow solo afecta a las pruebas que aparecen después de ella en la línea de comandos. A menos que se haya especificado la opción -H o -L, la posición de la opción -follow cambia el comportamiento del predicado -newer; cualquier archivo que se enumere como argumento de -newer se desreferenciará si son enlaces simbólicos. La misma consideración se aplica a -newerXY, -anewer y -cnewer. De manera similar, el predicado -type siempre coincidirá con el tipo del archivo al que apunta un enlace simbólico en lugar del enlace en sí. El uso de -follow hace que los predicados -lname y -ilname siempre devuelvan falso.

-regextype type

Cambia la sintaxis de expresión regular que comprenden las pruebas -regex e -iregex que ocurren más adelante en la línea de comandos. Para ver qué tipos de expresiones regulares se conocen, utilice -regextype help. La documentación de Texinfo (consulte VER 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 solo se aplican al uso de la línea de comandos, no a ninguna condición que find pueda encontrar cuando busca en los 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 comandos, el estado de salida de find no se ve afectado. Si la variable de entorno POSIXLY_CORRECT está establecida y también se utiliza -warn, no se especifica qué advertencias, si las hay, estarán activas.

OPCIONES GLOBALES

Las opciones globales siempre devuelven verdadero. Las opciones globales tienen efecto incluso para las pruebas que ocurren antes en la línea de comandos. Para evitar confusiones, las opciones globales deben especificarse en la línea de comandos después de la lista de puntos de inicio, justo antes de la primera prueba, opción posicional o acción. Si especifica una opción global en otro lugar, find emitirá un mensaje de advertencia que explique 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 de opción que, por ejemplo, -L.

-d Un sinónimo de -depth, para compatibilidad con FreeBSD, NetBSD, MacOS X y OpenBSD.

-depth Procese el contenido de cada directorio antes del propio directorio. La acción -delete también implica -depth.

-files0-from file

Lea los puntos de inicio desde el archivo en lugar de recibirlos desde la línea de comandos. En contraste con las limitaciones conocidas de pasar puntos de inicio a través de argumentos en la línea de comandos, a saber, la limitación de la cantidad de nombres de archivo y la ambigüedad inherente de que los nombres de archivo choquen con los nombres de las opciones, el uso de esta opción permite pasar de forma segura un número arbitrario de puntos de inicio para buscar.

El uso de esta opción y el paso de puntos de inicio en la línea de comandos son mutuamente excluyentes, y por lo tanto no está permitido hacerlo al mismo tiempo.

El argumento de archivo es obligatorio. Se puede usar -files0-from - para leer la lista de puntos de inicio desde la secuencia de entrada estándar y, por ejemplo, desde una tubería. En este caso, las acciones -ok y -okdir no están permitidas, porque obviamente interferirían con la lectura desde la entrada estándar para obtener una confirmación del usuario.

Los puntos de inicio en el 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 provocarán un mensaje de diagnóstico de error seguido de un código de salida distinto de cero más adelante.

En el caso de que el archivo dado 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 es diferente 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 de otro modo como de costumbre, por ejemplo, find recorrerá los subdirectorios a menos que se evite lo contrario. 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 está especificado si se visita más de una vez. Si el archivo se modifica durante la operación de find, el resultado tampoco está especificado. Finalmente, la posición de búsqueda dentro del archivo nombrado en el momento en que find sale, ya sea con -quit o de cualquier otra manera, tampoco está especificada. Por "no especificado" se entiende que puede o no funcionar o hacer algo específico, y que el comportamiento puede cambiar de una plataforma a otra, o de una versión de findutils a otra.

-help, --help

Imprima un resumen del uso de la línea de comandos de find y salga.

-ignore_readdir_race

Normalmente, find emitirá un mensaje de error cuando no pueda hacer stat a un archivo. Si proporciona esta opción y un archivo se elimina entre el momento en que find lee el nombre del archivo del directorio y el momento en que intenta hacer stat al archivo, no se emitirá ningún mensaje de error. Esto también se aplica a los archivos o directorios cuyos nombres se dan en la línea de comandos. Esta opción tiene efecto en el momento en que se lee la línea de comandos, lo que significa que no puede buscar una parte del sistema de archivos con esta opción activada y otra parte con esta opción desactivada (si necesita hacerlo, deberá emitir dos comandos find en su lugar, uno con la opción y otro sin ella).


Además, encontrar con la opción -ignore_readdir_race ignorará los errores de la acción -delete en caso de que el archivo haya desaparecido desde que se leyó el directorio padre: no generará un mensaje de error y el código de retorno de la acción -delete será verdadero.

-maxdepth levels

Desciende como máximo levels (un entero no negativo) niveles de directorios por debajo de los puntos de inicio. Usar -maxdepth 0 significa aplicar las pruebas y acciones solo a los puntos de inicio.

-mindepth levels

No aplica ninguna prueba o acción en niveles inferiores a levels (un entero no negativo). Usar -mindepth 1 significa procesar todos los archivos excepto los puntos de inicio.

-mount No desciende a los directorios en otros sistemas de archivos. Un nombre alternativo para -xdev, para compatibilidad con algunas otras versiones de find.

-noignore_readdir_race

Desactiva el efecto de -ignore_readdir_race.

-noleaf

No optimice asumiendo que los directorios contienen 2 subdirectorios menos que su recuento de enlaces duros. Esta opción es necesaria cuando se buscan sistemas de archivos que no siguen la convención de enlaces de directorios de Unix, como sistemas de archivos CD-ROM o MS-DOS o puntos de montaje de volumen AFS. Cada directorio en un sistema de archivos Unix normal tiene al menos 2 enlaces duros: su nombre y su entrada '. Además, sus subdirectorios (si los hay) tienen cada uno una entrada '..' enlazada a ese directorio. Cuando find está examinando un directorio, después de haber realizado stat en 2 subdirectorios menos que el recuento de enlaces del directorio, sabe que el resto de las entradas en el directorio no son directorios (archivos 'hoja' en el árbol de directorios). Si solo es necesario examinar los nombres de los archivos, no hay necesidad de realizar stat en ellos; esto proporciona un aumento significativo en la velocidad de búsqueda.

-version, --version

Imprime el número de versión de find y sale.

-xdev No desciende a los directorios en otros sistemas de archivos.

PRUEBAS

Algunas pruebas, por ejemplo, -newerXY y -samefile, permiten la comparación entre el archivo que se está examinando actualmente y un archivo de referencia especificado en la línea de comandos. Cuando se utilizan estas pruebas, la interpretación del archivo de referencia está determinada por las opciones -H, -L y -P y cualquier opción -follow anterior, pero el archivo de referencia solo se examina una vez, en el momento en que se analiza la línea de comandos. Si el archivo de referencia no se puede examinar (por ejemplo, si la llamada al sistema stat(2) falla para él), se emite un mensaje de error y find sale con un estado distinto de cero.


Se puede especificar un argumento numérico n para los tests (como -amin, -mtime, -gid, -inum, -links, -size, -uid y -used) de la siguiente manera:

+n para mayor que n,

-n para menor que n,

n para exactamente n.

Tests soportados:

-amin n

El archivo fue accedido por última vez hace menos de, más de o exactamente n minutos.

-anewer reference

El tiempo del último acceso del archivo actual es más reciente que el tiempo de la última modificación de datos del archivo de referencia. Si reference es un enlace simbólico y la opción -H o la opción -L están en efecto, entonces siempre se utiliza el tiempo de la última modificación de datos del archivo al que apunta.

-atime n

El archivo fue accedido por última vez hace menos de, más de o exactamente n*24 horas. Cuando find calcula cuántos períodos de 24 horas atrás fue la última vez que se accedió al archivo, cualquier parte fraccionaria se ignora, por lo que para coincidir con -atime +1, un archivo debe haber sido accedido al menos hace dos días.

-cmin n

El estado del archivo fue cambiado por última vez hace menos de, más de o exactamente n minutos.

-cnewer reference

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

-ctime n

El estado del archivo fue cambiado 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 los tiempos de cambio de estado del archivo.

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

-executable Coincide con los archivos que son ejecutables y los directorios que son buscables (en un sentido de resolución de nombres de archivos) por el usuario actual. Esto tiene en cuenta las listas de control de acceso y otros artefactos de permisos que el test -perm ignora. Este test utiliza la llamada al sistema access(2), y por lo tanto puede ser engañado por los servidores NFS que realizan el mapeo de UID (o la eliminación de privilegios de root), 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 que se mantiene en el servidor. Debido a que este test se basa únicamente en el resultado de la llamada al sistema access(2), no hay garantía de que un archivo para el cual este test tenga éxito pueda realmente ser ejecutado.

-false Siempre falso.

-fstype type

El archivo está en un sistema de archivos de tipo type. Los tipos de sistemas de archivos válidos varían entre las diferentes versiones de Unix; una lista incompleta de los tipos de sistemas de archivos que se aceptan en alguna versión de Unix u otra es: ufs, 4.2, 4.3, nfs, tmp, mfs, S51K, S52K. Puede utilizar -printf con el directivo %F para ver los tipos de sus sistemas de archivos.

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

-group gname

El archivo pertenece al grupo gname (se permite el ID de grupo numérico).

-ilname pattern

Similar a -lname, pero la coincidencia no distingue entre mayúsculas y minúsculas. Si la opción -L o la opción -follow están en efecto, este test devuelve falso a menos que el enlace simbólico esté roto.


-iname patrón
Similar a -name, pero la coincidencia no distingue entre mayúsculas y minúsculas. Por ejemplo, los patrones `fo*` y `F??`
coinciden con los nombres de archivo `Foo`, `FOO`, `foo`, `fOo`, etc. El patrón `*foo*` también coincidirá
con un archivo llamado `.foobar`.

-inum n
El archivo tiene un número de inodo menor, mayor o exactamente igual a n. Normalmente es
más fácil utilizar la prueba -samefile en su lugar.

-ipath patrón
Similar a -path, pero la coincidencia no distingue entre mayúsculas y minúsculas.

-iregex patrón
Similar a -regex, pero la coincidencia no distingue entre mayúsculas y minúsculas.

-iwholename patrón
Consulte -ipath. Esta alternativa es menos portátil que -ipath.

-links n
El archivo tiene menos, más 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 a `/` o `.` de forma especial. Si la opción -L o la opción -follow están en vigor, 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, más o exactamente n minutos.

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

-name patrón
La base del nombre del archivo (la ruta con los directorios principales eliminados) coincide con el patrón de shell
patrón. Dado que se eliminan los directorios principales de los nombres de los archivos, el
patrón no debe incluir una barra diagonal, porque `-name a/b` nunca coincidirá con nada (y probablemente querrá usar -path en su lugar). Una excepción a esto es cuando se utiliza solo una barra diagonal como patrón (`-name /`), porque es una cadena válida para hacer coincidir el directorio raíz `/` (porque la base del nombre de `/` es `/`). Se emite una advertencia si intenta pasar un patrón que contenga una barra diagonal (pero que no consista solo en una), a menos que la variable de entorno
POSIXLY_CORRECT esté configurada o se utilice la opción -nowarn.

Para ignorar un directorio y los archivos que contiene, utilice -prune en lugar de comprobar cada archivo
del árbol; consulte un ejemplo en la descripción de esa acción. Las llaves no se reconocen
como especiales, a pesar del hecho de que algunos shells, incluido Bash, confieren a las llaves un significado especial en los patrones de shell. La coincidencia de nombres de archivo se realiza mediante el uso de la
función de biblioteca fnmatch(3). No olvide encerrar el patrón entre comillas para
protegerlo de la expansión por parte del shell.

-newer referencia
El tiempo de la última modificación de datos del archivo actual es más reciente que el del
último tiempo de modificación de datos del archivo de referencia. Si referencia es un enlace simbólico y la opción -H
o la opción -L están en vigor, entonces siempre se utiliza el tiempo de la última modificación de datos del
archivo al que apunta.

-newerXY referencia
Tiene éxito si la marca de tiempo X del archivo que se está considerando es más reciente que la marca de tiempo Y del archivo
referencia. Las letras X e Y pueden ser cualquiera de las siguientes letras:

a   El tiempo de acceso del archivo de referencia
B   El tiempo de creación del archivo de referencia
c   El tiempo de cambio del estado del inodo de la referencia
m   El tiempo de modificación del archivo de referencia
t   La referencia se interpreta directamente como una hora

Algunas combinaciones son inválidas; por ejemplo, es invá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 especifica una combinación XY inválida o no compatible, se produce un error fatal. Las especificaciones de tiempo se interpretan como para el argumento de la opción -d de GNU date. Si intenta utilizar el tiempo de creación de un archivo de referencia, y el tiempo de creación no se puede determinar, se produce un mensaje de error fatal. Si especifica una prueba que se refiere al tiempo de creación de los archivos que se están examinando, esta prueba fallará para cualquier archivo en el que el tiempo de creación sea desconocido.

-nogroup

No hay ningún grupo que corresponda al ID de grupo numérico del archivo.

-nouser

No hay ningún usuario que corresponda al ID de usuario numérico del archivo.

-path patrón

El nombre del archivo coincide con el patrón de shell. Los metacaracteres no tratan a `/\' o `.\' de forma especial; por lo tanto, por ejemplo, find . -path "./sr*sc" imprimirá una entrada para un directorio llamado ./src/misc (si existe). Para ignorar todo un árbol de directorios, utilice -prune en lugar de comprobar cada archivo del árbol. Tenga en cuenta que la prueba de coincidencia de patrones se aplica a todo el nombre del archivo, comenzando por uno de los puntos de inicio especificados en la línea de comandos. Solo tendría sentido utilizar un nombre de ruta absoluto aquí si el punto de inicio relevante también es un nombre de ruta absoluto. Esto significa que este comando nunca coincidirá con nada: find bar -path /foo/bar/myfile -print Find compara el argumento -path con la concatenación de un nombre de directorio y el nombre base del archivo que está examinando. Dado que la concatenación nunca terminará con una barra, los argumentos -path que terminen con una barra no coincidirán con nada (excepto quizás un punto de inicio especificado en la línea de comandos). 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 coincidencia exacta, si desea utilizar este formato para los modos simbólicos, es posible que tenga que especificar una cadena de modo bastante compleja. Por ejemplo, -perm g=w solo coincidirá con los archivos que tienen el modo 0020 (es decir, aquellos para los que el permiso de escritura de grupo es el único permiso establecido). Es más probable que desee utilizar las formas '/' o-', por ejemplo,-perm -g=w`, que coincide 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 de modo están establecidos para el archivo. Los modos simbólicos se aceptan en este formato, y esta es generalmente la forma en que desea utilizarlos. Debe especificar u, g o o si utiliza un modo simbólico. Consulte la sección EJEMPLOS para ver algunos ejemplos ilustrativos.

-perm /modo

Cualquiera de los bits de permiso de modo están establecidos para el archivo. Los modos simbólicos se aceptan en este formato. Debe especificar u, g o o si utiliza un modo simbólico. Consulte la sección EJEMPLOS para ver algunos ejemplos ilustrativos. Si no se establecen bits de permiso en modo, esta prueba coincide con cualquier archivo (la idea aquí es ser coherente con el comportamiento de -perm -000).


-perm +mode

Esto ya no es compatible (y está en desuso desde 2005). Use -perm /mode en su lugar.

-readable

Coincide con los archivos que son legibles por el usuario actual. 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), por lo que puede ser engañada por los servidores NFS que realizan el mapeo de UID (o la supresión de root), 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 que se encuentra en el servidor.

-regex pattern
El nombre del archivo coincide con la expresión regular pattern. Esto es una coincidencia en toda la ruta, no una búsqueda. Por ejemplo, para coincidir con un archivo llamado ./fubar3, puede utilizar la expresión regular `.*bar.' o `.*b.*3', pero no `f.*r3'. Las expresiones regulares que entiende find son, por defecto, las expresiones regulares de Emacs, pero esto se puede cambiar con la opción -regextype.

-samefile name

El archivo se refiere al mismo inodo que name. Cuando -L está en efecto, esto puede incluir enlaces simbólicos.

-size n[cwbkMG]

El archivo utiliza menos, más o exactamente n unidades de espacio, redondeando hacia arriba. Se pueden utilizar los siguientes sufijos:

`b' para bloques de 512 bytes (este es el valor predeterminado si no se utiliza 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), redondeando hacia arriba como se muestra arriba. En otras palabras, es consistente con el resultado que se obtiene para ls -l. Tenga en cuenta que los especificadores de formato %k' y%b' de -printf manejan los archivos dispersos de manera diferente. El sufijo `b' siempre denota bloques de 512 bytes y nunca bloques de 1024 bytes, lo que es diferente del comportamiento de -ls.

Los prefijos + y - significan mayor que y menor que, como de costumbre; es decir, un tamaño exacto de n unidades no coincide. Tenga en cuenta que el tamaño se redondea al 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 verdadero.

-type c

El archivo es del tipo c:

b bloque (especial) con búfer

c especial de caracteres (sin búfer)

d directorio

p tubería con nombre (FIFO)

f archivo regular

l enlace simbólico; esto nunca es verdadero si la opción -L o la opción -follow están en efecto, a menos que el enlace simbólico esté roto. Si desea buscar enlaces simbólicos cuando -L está en efecto, utilice -xtype.

s      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

El archivo fue accedido por última vez hace menos de, más de o exactamente n días después de que su estado se modificó por última vez.

-user uname

El archivo pertenece al usuario uname (se permite el ID de usuario numérico).

-wholename pattern

Consulte -path. Esta alternativa es menos portátil que -path.

-writable

Coincide con los archivos que son escribibles por el usuario actual. 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 los servidores NFS que realizan el mapeo de UID (o la supresión de root), 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 que se mantiene en el servidor.

-xtype c

Es lo mismo que -type a menos que el archivo sea un enlace simbólico. Para los enlaces simbólicos: si se especificó la opción -H o -P, es verdadero si el archivo es un enlace a un archivo de tipo c; si se ha dado la opción -L, es verdadero si c es l. En otras palabras, para los enlaces simbólicos, -xtype comprueba el tipo del archivo al que apunta -type. Si un enlace simbólico está roto (porque la cosa a la que apunta no existe o el enlace apunta a sí mismo), entonces -xtype se comportará de la misma manera que -type.

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

ACCIONES

-delete

Elimina archivos o directorios; verdadero si la eliminación tuvo éxito. Si la eliminación falló, se muestra un mensaje de error y el estado de salida de find será distinto de cero (cuando finalmente se salga).

Advertencia: no olvide que find evalúa la línea de comandos como una expresión, por lo que colocar -delete primero hará que find intente eliminar todo lo que haya debajo de los puntos de inicio que especificó.

El uso de la acción -delete en la línea de comandos activa automáticamente la opción -depth. A su vez, -depth hace que -prune sea ineficaz, por lo que la acción -delete no se puede combinar de manera útil con -prune.

A menudo, el usuario querrá probar una línea de comandos find con -print antes de agregar -delete para la ejecución de eliminación real. Para evitar resultados sorprendentes, generalmente es mejor recordar utilizar -depth explícitamente durante esas 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 en el caso de que el archivo haya desaparecido desde que se leyó el directorio padre: no mostrará un mensaje de diagnóstico de error, no cambiará el código de salida a distinto de cero y el código de retorno de la acción -delete será verdadero.

-exec command ;

Ejecuta el comando; verdadero si se devuelve el estado 0. Todos los argumentos siguientes a find se toman como argumentos del comando hasta que se encuentre un argumento que consiste en ;. La cadena {} se reemplaza por el nombre de archivo actual que se está procesando en todas partes en los argumentos del comando, no solo en los argumentos donde está solo, como en algunas versiones de find. Ambas construcciones pueden necesitar ser escapadas (con \) o entre comillas para protegerlas de la expansión por parte del shell. Consulte la sección EJEMPLOS para obtener ejemplos del uso de la opción -exec. El comando especificado se ejecuta una vez por cada archivo coincidente. El comando se ejecuta en el directorio de inicio. Existen problemas de seguridad inevitables relacionados con el uso de la acción -exec; debe usar la opción -execdir en su lugar.


-exec command {} +

Esta variante de la acción -exec ejecuta el comando especificado en los archivos seleccionados, pero la línea de comandos se construye añadiendo el nombre de cada archivo seleccionado al final; el número total de invocaciones del comando será mucho menor que el número de archivos coincidentes. La línea de comandos se construye de manera muy similar a como xargs construye sus líneas de comandos. Solo se permite una instancia de {} dentro del comando, y debe aparecer al final, inmediatamente antes de +; debe escaparse (con \) o entrecomillarse para protegerlo de la interpretación del shell. El comando se ejecuta en el directorio de inicio. Si alguna invocación con la forma + devuelve un valor de salida distinto de cero, entonces find devuelve un valor de salida distinto de cero. Si find encuentra un error, a veces esto puede provocar una salida inmediata, por lo que algunos comandos pendientes podrían no ejecutarse en absoluto. Por esta razón, -exec my-command ... {} + -quit puede que no resulte en que my-command se ejecute realmente. Esta variante de -exec siempre devuelve verdadero.

-execdir command ;

-execdir command {} +

Similar a -exec, pero el comando especificado se ejecuta desde el subdirectorio que contiene el archivo coincidente, que normalmente no es el directorio en el que inició find. Como con -exec, {} debe entrecomillarse si find se está invocando desde un shell. Este es un método mucho más seguro para invocar comandos, ya que evita las condiciones de carrera durante la resolución de las rutas a los archivos coincidentes. Como con la acción -exec, la forma + de -execdir construirá una línea de comandos para procesar más de un archivo coincidente, pero cualquier invocación dada del comando solo listará los archivos que existan en el mismo subdirectorio. Si utiliza esta opción, debe asegurarse de que su variable de entorno PATH no haga referencia a .'; de lo contrario, un atacante puede ejecutar cualquier comando que desee dejando un archivo con el nombre adecuado 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 de salida distinto de cero, entonces find devuelve un valor de salida distinto de cero. Si find encuentra un error, a veces esto puede provocar una salida inmediata, por lo que algunos comandos pendientes podrían no ejecutarse en absoluto. El resultado de la acción depende de si se está utilizando la variante+o;` de -execdir; -execdir command {} + siempre devuelve verdadero, mientras que -execdir command {} ; devuelve verdadero solo si command devuelve 0.


-fls archivo

Verdadero; similar a -ls, pero escribe en un archivo como -fprint. El archivo de salida siempre se crea, incluso si el predicado nunca se cumple. Consulte la sección NOMBRES DE ARCHIVOS INUSUALES para obtener información sobre cómo se manejan los caracteres inusuales en los nombres de archivo.

-fprint archivo

Verdadero; imprime el nombre completo del archivo en el archivo. Si el archivo no existe cuando se ejecuta find, se crea; si existe, se trunca. Los nombres de archivo /dev/stdout y /dev/stderr se manejan de forma especial; se refieren a la salida estándar y a la salida de error estándar, respectivamente. El archivo de salida siempre se crea, incluso si el predicado nunca se cumple. Consulte la sección NOMBRES DE ARCHIVOS INUSUALES para obtener información sobre cómo se manejan los caracteres inusuales en los nombres de archivo.

-fprint0 archivo

Verdadero; similar a -print0, pero escribe en un archivo como -fprint. El archivo de salida siempre se crea, incluso si el predicado nunca se cumple. Consulte la sección NOMBRES DE ARCHIVOS INUSUALES para obtener información sobre cómo se manejan los caracteres inusuales en los nombres de archivo.

-fprintf archivo formato

Verdadero; similar a -printf, pero escribe en un archivo como -fprint. El archivo de salida siempre se crea, incluso si el predicado nunca se cumple. Consulte la sección NOMBRES DE ARCHIVOS INUSUALES para obtener información sobre cómo se manejan los caracteres inusuales en los nombres de archivo.

-ls    Verdadero; muestra el archivo actual en formato ls -dils en la salida estándar. Los recuentos de bloques son de bloques de 1 KB, a menos que la variable de entorno POSIXLY_CORRECT esté establecida, en cuyo caso se utilizan bloques de 512 bytes. Consulte la sección NOMBRES DE ARCHIVOS INUSUALES para obtener información sobre cómo se manejan los caracteres inusuales en los nombres de archivo.

-ok comando ;

Similar a -exec, pero pregunta primero al usuario. Si el usuario está de acuerdo, ejecuta el comando. De lo contrario, simplemente devuelve falso. Si se ejecuta el comando, su entrada estándar se redirige desde /dev/null. Esta acción no se puede especificar junto con la opción -files0-from.

La respuesta a la solicitud se compara con un par de expresiones regulares para determinar si es una respuesta afirmativa o negativa. Esta expresión regular se obtiene del sistema si la variable de entorno POSIXLY_CORRECT está establecida, o de lo contrario, de las traducciones de mensajes de find. Si el sistema no tiene una definición adecuada, find utilizará su propia definición. En cualquier caso, la interpretación de la expresión regular en sí se verá afectada por las variables de entorno LC_CTYPE (clases de caracteres) y LC_COLLATE (rangos de caracteres y clases de equivalencia).

-okdir comando ;

Similar a -execdir, pero pregunta primero al usuario de la misma manera que para -ok. Si el usuario no está de acuerdo, simplemente devuelve falso. Si se ejecuta el comando, su entrada estándar se redirige desde /dev/null. Esta acción no se puede especificar junto con la opción -files0-from.

-print Verdadero; imprime el nombre completo del archivo en la salida estándar, seguido de una nueva línea. Si está canalizando la salida de find a otro programa y existe la más mínima posibilidad de que los archivos que está buscando puedan contener una nueva línea, entonces debe considerar seriamente usar la opción -print0 en lugar de -print. Consulte la sección NOMBRES DE ARCHIVOS INUSUALES para obtener información sobre cómo se manejan los caracteres inusuales en los nombres de archivo.

-print0

Verdadero; imprime el nombre completo del archivo en la salida estándar, seguido de un carácter nulo (en lugar del carácter de nueva línea que usa -print). Esto permite que los nombres de archivo que contienen nuevas líneas u otros tipos de espacios en blanco se interpreten correctamente por los programas que procesan la salida de find. Esta opción corresponde a la opción -0 de xargs.

-printf format

Verdadero; imprime format en la salida estándar, interpretando los escapes \ y los directivos %. Los anchos y las precisiones de campo se pueden especificar como en la función C printf(3). Tenga en cuenta que muchos de los campos se imprimen como %s en lugar de %d, y esto puede significar que las opciones no funcionen como podría esperar. Esto también significa que la opción - funciona (fuerza que los campos se alineen a la izquierda). A diferencia de -print, -printf no agrega una nueva línea al final de la cadena. Los escapes y los directivos son:

\a     Señal acústica.

\b     Retroceso.

\c     Deje de imprimir desde este formato inmediatamente y vacíe la salida.

\f     Avance de página.

\n     Nueva línea.

\r     Retorno de carro.

\t     Tabulador horizontal.

\v     Tabulador vertical.

\0     ASCII NUL.

\\     Una barra invertida literal (`\`).

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

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

%%     Un signo de porcentaje literal.

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

%Ak    La última hora de acceso del archivo en el formato especificado por k, que es `@` o un directivo para la función C strftime(3). Lo siguiente muestra una lista incompleta de los posibles valores para k. Consulte la documentación de strftime(3) para obtener la lista completa. Algunos de los caracteres de especificación de conversión pueden no estar disponibles en todos los sistemas, debido a las diferencias en la implementación de la función de biblioteca strftime(3).

@      segundos desde el 1 de enero de 1970, 00:00 GMT, con 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 del idioma

r      hora, 12 horas (hh:mm:ss [AP]M)

S      Segundo (00.00 .. 61.00). Hay una parte fraccionaria.

T      hora, 24 horas (hh:mm:ss.xxxxxxxxxx)

+      Fecha y hora, separadas por `+`, por ejemplo `2004-04-28+22:22:05.0`. Esta es una extensión GNU. La hora se indica 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 del idioma (H:M:S). El campo de segundos incluye una parte fraccionaria.

Z      zona horaria (por ejemplo, EDT), o nada si no se puede determinar la zona horaria.

Campos de fecha:

a      Nombre abreviado del día de la semana en la configuración regional (Dom..Sáb)

A      Nombre completo del día de la semana en la configuración regional, de longitud variable (Domingo..Sábado)

b      Nombre abreviado del mes en la configuración regional (Ene..Dic)

B      Nombre completo del mes en la configuración regional, de longitud variable (Enero..Diciembre)

c      Fecha y hora en la configuración regional (Sáb Nov 04 12:02:33 EST 1989).  El
formato es el mismo que para ctime(3) y, por lo tanto, para preservar la compatibilidad con ese formato, no hay parte fraccionaria en el campo de los segundos.

d      día del mes (01..31)

D      fecha (mm/dd/aa)

F      fecha (aaaa-mm-dd)

h      igual que b

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

m      mes (01..12)

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

w      día de la semana (0..6)

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

x      representación de fecha en la configuración regional (mm/dd/aa)

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

Y      año (1970...)

%b     La cantidad de espacio en disco utilizado para este archivo en bloques de 512 bytes. Dado que el espacio en disco se asigna en múltiplos del tamaño de bloque del sistema de archivos, esto suele ser mayor que
%s/512, pero también puede ser menor si el archivo es un archivo disperso.

%Bk    Hora de creación del archivo, es decir, su hora de creación, en el formato especificado por k, que es el mismo que para %A. Este directivo produce una cadena vacía si el sistema operativo o el sistema de archivos subyacente no admite las horas de creación.

%c     Última hora de cambio de estado del archivo en el formato devuelto por la función C ctime(3).

%Ck    Última hora de cambio de estado del archivo 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 en el que existe el archivo (el campo st_dev de struct stat), en
decimal.

%f     Imprime el nombre base; el nombre del archivo con cualquier directorio principal eliminado (solo el
último elemento). Para /, el resultado es `/'. Consulte la sección de EJEMPLOS para obtener un ejemplo.

%F     Tipo del sistema de archivos en el que se encuentra el archivo; este valor se puede utilizar para -fstype.

%g     Nombre del grupo del archivo o ID de grupo numérico si el grupo no tiene nombre.

%G     ID de grupo numérico del archivo.

%h     Dirname; los directorios principales del nombre del archivo (todos excepto el último elemento). Si
el nombre del archivo no contiene barras (ya que está en el directorio actual), el especificador %h
se expande a `.'. Para los archivos que son en sí mismos directorios y contienen una
barra (incluido /), %h se expande a una cadena vacía. Consulte la sección de EJEMPLOS para obtener un ejemplo.

%H     Punto de partida debajo del cual se encontró el archivo.

%i     Número de inodo del archivo (en decimal).

%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, esto suele ser mayor que
%s/1024, pero también puede ser menor si el archivo es un archivo disperso.

%l     Objeto de enlace simbólico (cadena vacía si el archivo no es un enlace simbólico).

%m     Bits de permiso del archivo (en octal). Esta opción utiliza los números "tradicionales"
que la mayoría de las implementaciones de Unix utilizan, pero si su implementación particular utiliza un
orden inusual de bits de permiso octal, verá una diferencia entre
el valor real del modo del archivo y la salida de %m. Normalmente, querrá
tener un cero inicial en este número y, para hacerlo, debe utilizar la marca # (como
en, por ejemplo, `%#m`).

%M Permisos del archivo (en formato simbólico, como para ls). Esta directiva es compatible con findutils 4.2.5 y versiones posteriores.

%n Número de enlaces duros al archivo.

%p Nombre del archivo.

%P Nombre del archivo con el nombre del punto de partida desde el que se encontró eliminado.

%s Tamaño del archivo en bytes.

%S Esparcidad del archivo. Esto se calcula como (BLOCKSIZE * st_blocks / st_size). El valor exacto que obtendrá para un archivo ordinario de una determinada longitud depende del sistema. Sin embargo, normalmente, los archivos dispersos tendrán valores inferiores a 1.0, y los archivos que utilizan bloques indirectos pueden tener un valor mayor que 1.0. En general, el número de bloques utilizados por un archivo depende del sistema de archivos. El valor utilizado para BLOCKSIZE depende del sistema, pero suele ser de 512 bytes. Si el tamaño del archivo es cero, el valor impreso no está definido. En los sistemas que no son compatibles con st_blocks, se asume que la esparcidad de un archivo es 1.0.

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

%Tk Hora de la última modificación del archivo en el formato especificado por k, que es el mismo que para %A.

%u Nombre de usuario del archivo o ID de usuario numérico si el usuario no tiene nombre.

%U ID de usuario numérico del archivo.

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

%Y Tipo de archivo (como %y), más 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 uso futuro.

Un carácter `%` seguido de cualquier otro carácter se descarta, pero el otro carácter se imprime (no confíe en esto, ya que se pueden introducir más caracteres de formato). Un carácter `%` al final del argumento de formato provoca un comportamiento indefinido, ya que no hay ningún carácter siguiente. En algunas configuraciones regionales, puede ocultar las llaves de su puerta, mientras que en otras puede eliminar la página final del libro que está leyendo.

Las directivas %m y %d admiten las marcas #, 0 y +, pero las demás directivas no las admiten, incluso si imprimen números. Las directivas numéricas que no admiten estas marcas incluyen G, U, b, D, k y n. La marca de formato `-' se admite y cambia la alineación de un campo de justificado a la derecha (que es el valor predeterminado) a justificado a la izquierda.

Consulte la sección NOMBRES DE ARCHIVOS INUSUALES para obtener información sobre cómo se gestionan los caracteres inusuales de los nombres de archivo.

-prune Verdadero; si el archivo es un directorio, no descienda en él. Si se proporciona -depth, entonces -prune no tiene ningún efecto. Dado que -delete implica -depth, no se puede utilizar -prune y -delete de forma útil juntos. Por ejemplo, para omitir el directorio src/emacs y todos los archivos y directorios que contiene, e imprimir los nombres de los demás archivos encontrados, haga algo como esto:
find . -path ./src/emacs -prune -o -print

-quit Salir inmediatamente (con un 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 podados, mientras que -quit simplemente hace que find se detenga inmediatamente. No quedarán procesos hijo en ejecución. Cualquier línea de comandos que haya sido construida por -exec ... + o -execdir ... + se invoca antes de que el programa se cierre. Después de ejecutar -quit, no se procesarán más archivos especificados en la línea de comandos. Por ejemplo, `find /tmp/foo /tmp/bar -print -quit` imprimirá solo `/tmp/foo`.

Un uso común de -quit es detener la búsqueda del sistema de archivos una vez que hayamos encontrado lo que queremos. Por ejemplo, si queremos encontrar solo un archivo, podemos hacerlo de esta manera: find / -name needle -print -quit

OPERADORES

Enumerados en orden de precedencia decreciente:

( expr )

Fuerza la precedencia. Dado que los paréntesis son especiales para el shell, normalmente deberá protegerlos. Muchos de los ejemplos en esta página de manual utilizan barras diagonales invertidas para este propósito: \(...\)' en lugar de(...)'.

! expr Verdadero si expr es falso. Este carácter también normalmente necesitará protección contra la interpretación del shell.

-not expr

Lo mismo que ! expr, pero no es compatible con POSIX.

expr1 expr2

Dos expresiones seguidas se consideran unidas con un -a implícito; expr2 no se evalúa si expr1 es falso.

expr1 -a expr2

Lo mismo que expr1 expr2.

expr1 -and expr2

Lo mismo que expr1 expr2, pero no es compatible con POSIX.

expr1 -o expr2

O; expr2 no se evalúa si expr1 es verdadero.

expr1 -or expr2

Lo mismo que expr1 -o expr2, pero no es compatible con POSIX.

expr1 , expr2

Lista; tanto expr1 como expr2 siempre se evalúan. 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 cosas diferentes, pero recorriendo la jerarquía del sistema de archivos solo una vez. La acción -fprintf se puede utilizar para enumerar los diversos elementos coincidentes en varios archivos de salida.

Tenga en cuenta que -a cuando se especifica implícitamente (por ejemplo, mediante dos pruebas que aparecen sin un operador explícito entre ellas) o explícitamente tiene mayor precedencia que -o. Esto significa que find . -name afile -o -name bfile -print nunca imprimirá afile.

NOMBRES DE ARCHIVO INUSUALES

Muchas de las acciones de find dan como resultado la impresión de datos que están bajo el control de otros usuarios. Esto incluye nombres de archivo, tamaños, horas 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 hacer cosas inesperadas y, a menudo, indeseables a su terminal (por ejemplo, cambiar la configuración de las teclas de función en algunos terminales). Los caracteres inusuales se manejan de manera diferente por varias acciones, como se describe a continuación.


-print0, -fprint0

Siempre imprime el nombre de archivo exacto, sin cambios, incluso si la salida se dirige a una terminal.

-ls, -fls

Los caracteres inusuales siempre se escapan. Los espacios en blanco, las barras invertidas y las comillas dobles se imprimen utilizando el escape de estilo C (por ejemplo, \f, \"). Otros caracteres inusuales se imprimen utilizando un escape octal. Los demás caracteres imprimibles (para -ls y -fls, estos son los caracteres entre los octales 041 y 0176) se imprimen tal cual.

-printf, -fprintf

Si la salida no se dirige a una terminal, se imprime tal cual. De lo contrario, el resultado depende del directivo utilizado. Los directivos %D, %F, %g, %G, %H, %Y e %y se expanden a valores que no están bajo el control de los propietarios de los archivos, por lo que se imprimen tal cual. Los directivos %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 utilizar para enviar datos arbitrarios a la terminal, por lo que estos se imprimen tal cual. Los directivos %f, %h, %l, %p y %P se encierran entre comillas. Esta inclusión entre comillas se realiza de la misma manera que para GNU ls. Este no es el mismo mecanismo de inclusión entre comillas que se utiliza para -ls y -fls. Si puede decidir qué formato utilizar para la salida de find, normalmente es mejor utilizar \0 como terminador en lugar de utilizar una nueva línea, ya que los nombres de archivo pueden contener espacios en blanco y caracteres de nueva línea. La configuración de la variable de entorno LC_CTYPE se utiliza para determinar qué caracteres deben incluirse entre comillas.

-print, -fprint

La inclusión entre comillas se maneja de la misma manera que para -printf y -fprintf. Si está utilizando find en un script o en una situación en la que los archivos coincidentes puedan tener nombres arbitrarios, debe considerar la posibilidad de utilizar -print0 en lugar de -print.

Las acciones -ok y -okdir imprimen el nombre de archivo actual tal cual. Esto puede cambiar en una versión futura.

CONFORMIDAD CON LOS ESTÁNDARES

Para obtener la mayor conformidad con el estándar POSIX, debe establecer la variable de entorno POSIXLY_CORRECT. Las siguientes opciones se especifican en el estándar POSIX (IEEE Std 1003.1-2008, edición de 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 (`*`, `?` o `[]`, por ejemplo) coinciden con un punto inicial (`.`), porque la interpretación 126 de IEEE PASC requiere esto. Este es un cambio con respecto a las versiones anteriores de findutils.

-type Compatible. POSIX especifica `b`, `c`, `d`, `l`, `p`, `f` y `s`. GNU find también admite `D`, que representa una puerta, donde el sistema operativo proporciona estas. Además, GNU find permite especificar varios tipos a la vez en una lista separada por comas.

-ok Compatible. La interpretación de la respuesta es de acuerdo con los patrones `yes` y `no` seleccionados estableciendo la variable de entorno LC_MESSAGES. Cuando se establece 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. Cuando POSIXLY_CORRECT no está establecido, los patrones se toman en su lugar del catálogo de mensajes de find.

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

-perm Compatible. Si la variable de entorno POSIXLY_CORRECT no está configurada, algunos argumentos de modo (por ejemplo, +a+x) que no son válidos en POSIX se admiten para la compatibilidad con versiones anteriores.

Otros parámetros principales Los parámetros -atime, -ctime, -depth, -exec, -group, -links, -mtime, -nogroup, -nouser, -ok, -path, -print, -prune, -size, -user y -xdev son compatibles.

El estándar POSIX especifica 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 más allá del estándar POSIX. Muchas de estas extensiones no son exclusivas de GNU find.

El estándar POSIX requiere que find detecte bucles:

La utilidad find debe detectar bucles infinitos; es decir, entrar en un directorio visitado anteriormente que es un ancestro del último archivo encontrado. Cuando detecte un bucle infinito, find debe escribir un mensaje de diagnóstico en la salida de error estándar y debe recuperar su posición en la jerarquía o terminar.

GNU find cumple con estos requisitos. El recuento de enlaces de los directorios que contienen entradas que son enlaces duros a un ancestro a menudo será menor de lo que debería ser. Esto puede significar que GNU find a veces optimiza la visita de un subdirectorio que en realidad es un enlace a un ancestro. Dado que find no entra realmente en dicho subdirectorio, se le permite evitar emitir un mensaje de diagnóstico. Aunque este comportamiento puede ser algo confuso, es poco probable que alguien dependa realmente de este comportamiento. Si la optimización de hojas se ha desactivado con -noleaf, la entrada del directorio siempre se examinará y el mensaje de diagnóstico se emitirá cuando sea apropiado. Los enlaces simbólicos no se pueden usar para crear ciclos del sistema de archivos como tal, pero si se utiliza la opción -L o la opción -follow, se emite un mensaje de diagnóstico cuando find encuentra un bucle de enlaces simbólicos. Al igual que con los bucles que contienen enlaces duros, la optimización de hojas a menudo significa que find sabe que no necesita llamar a stat() o chdir() en el enlace simbólico, por lo que este diagnóstico a menudo no es necesario.

La opción -d es compatible para la compatibilidad con varios sistemas BSD, pero debe usar la opción compatible con POSIX -depth en su lugar.


La variable de entorno POSIXLY_CORRECT no afecta al comportamiento de las pruebas -regex o -iregex porque estas pruebas no están especificadas en el estándar POSIX.

VARIABLES DE ENTORNO

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

LC_ALL Si se establece en 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 especifica que esta variable afecta a la coincidencia de patrones que se utiliza
para la opción -name. GNU find utiliza la función de biblioteca fnmatch(3), por lo que el soporte para
LC_COLLATE depende de la biblioteca del sistema. Esta variable también afecta a la interpretación
de la respuesta a -ok; aunque la variable LC_MESSAGES selecciona el patrón real que se utiliza para
interpretar la respuesta a -ok, la interpretación de cualquier expresión de corchetes en el patrón se verá afectada por LC_COLLATE.

LC_CTYPE

Esta variable afecta al tratamiento de las clases de caracteres que se utilizan en las expresiones regulares y también con la prueba -name, si la función de biblioteca fnmatch(3) del sistema la admite. Esta variable también afecta a la interpretación de cualquier clase de caracteres en las expresiones regulares que se utilizan para interpretar la respuesta a la indicación que se muestra mediante -ok. La variable de entorno LC_CTYPE también afectará a los caracteres que se consideran no imprimibles cuando se imprimen los 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á establecida, esto también determina la interpretación de la respuesta a la indicación que se muestra mediante la acción -ok.

NLSPATH

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

PATH   Afecta a los directorios que se buscan para encontrar los ejecutables que se invocan mediante -exec, -execdir, -ok y -okdir.

POSIXLY_CORRECT

Determina el tamaño de bloque que se utiliza con -ls y -fls. Si POSIXLY_CORRECT está establecida, los bloques son unidades de 512 bytes. En caso contrario, son unidades de 1024 bytes.

Establecer esta variable también desactiva los mensajes de advertencia (es decir, implica -nowarn) de forma predeterminada, porque POSIX exige que, aparte de la salida de -ok, todos los mensajes que se imprimen en stderr son diagnósticos y deben dar como resultado un estado de salida distinto de cero.

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

Cuando POSIXLY_CORRECT está establecida, la respuesta a la indicación que se muestra mediante la acción -ok se interpreta según el catálogo de mensajes del sistema, en lugar de según las traducciones de mensajes propias de find.

TZ     Afecta a la zona horaria que se utiliza para algunos de los directivos de formato relacionados con la hora de -printf y
-fprintf.

EJEMPLOS

Enfoque simple find|xargs

Buscar archivos con el nombre core en o debajo del directorio /tmp y eliminarlos.

$ 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 contienen saltos de línea, comillas simples o dobles, o espacios.


Enfoque más seguro para find -print0 | xargs -0

Encuentra los archivos llamados core en o debajo del directorio /tmp y los elimina, procesando los nombres de archivo de tal manera que los nombres de archivo o directorio que contienen comillas simples o dobles, espacios o saltos de línea se manejen 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 todavía existe una carrera entre el momento en que find recorre la jerarquía e imprime los nombres de archivo coincidentes, y el momento en que el proceso ejecutado por xargs trabaja con ese archivo.

Procesamiento de puntos de inicio arbitrarios

Dado que otro programa, proggy, prefiltra y crea una lista enorme de archivos separados por NUL, procese esos archivos como puntos de inicio y encuentre todos los archivos regulares y vacíos entre ellos:

$ proggy | find -files0-from - -maxdepth 0 -type f -empty

El uso de -files0-from - significa leer los nombres de los puntos de inicio desde la entrada estándar, es decir, desde la tubería; y -maxdepth 0 asegura que solo se examinen explícitamente esas entradas sin recurrir a los directorios (en caso de que uno de los puntos de inicio sea uno).

Ejecución de un comando para cada archivo

Ejecute el comando file en cada archivo en o debajo del directorio actual.

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

Tenga en cuenta que las llaves están encerradas entre comillas simples para protegerlas de la interpretación como puntuación de la secuencia de comandos de shell. El punto y coma también está protegido mediante el uso de una barra diagonal invertida, aunque también se podrían haber usado comillas simples en ese caso.

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

Recorrer el sistema de archivos solo una vez: para 2 acciones diferentes

Recorra el sistema de archivos solo una vez, enumerando los archivos y directorios con el bit set-user-ID 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 al shell que continúe leyendo el comando en la línea siguiente.

Búsqueda de archivos por antigüedad

Busque archivos en su directorio de inicio que hayan sido modificados en las últimas veinticuatro horas.

$ find $HOME -mtime 0

Este comando funciona de esta manera porque el tiempo transcurrido desde la última modificación de cada archivo se divide por 24 horas y se descarta cualquier resto. Eso significa que, para coincidir con -mtime 0, un archivo deberá tener una modificación en el pasado que tenga menos de 24 horas.

Búsqueda de archivos por permisos

Busque archivos que sean ejecutables pero no legibles.

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

Busque archivos que tengan permisos de lectura y escritura para su propietario y su grupo, pero que otros usuarios puedan leer pero no escribir.


$ find . -perm 664

Los archivos que cumplen estos criterios, pero que tienen otros bits de permiso establecidos (por ejemplo, si alguien puede ejecutar el archivo), no se encontrarán.

Busque archivos que tengan permiso de lectura y escritura para su propietario y grupo, y que los demás usuarios puedan leer, sin importar la presencia de bits de permiso adicionales (por ejemplo, el bit de ejecución).

$ find . -perm -664

Esto coincidirá con un archivo que tiene el modo 0777, por ejemplo.

Busque archivos que sean escribibles por alguien (su propietario, o su grupo, o cualquier otra persona).

$ find . -perm /222

Busque archivos que sean escribibles por su propietario o su grupo.

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

Los tres comandos hacen lo mismo, pero el primero usa la representación octal del modo del archivo, y los otros dos usan la forma simbólica. Los archivos no tienen que ser escribibles tanto por el propietario como por el grupo para que se encuentren; basta con que uno de los dos lo sea.

Busque archivos que sean escribibles tanto por su propietario como por su grupo.

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

Estos dos comandos hacen lo mismo.

Una búsqueda más elaborada sobre los permisos.

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

Estos dos comandos buscan archivos que son legibles para todos (-perm -444 o -perm -a+r), tienen al menos un bit de escritura establecido (-perm /222 o -perm /a+w) pero no son ejecutables para nadie (! -perm /111 o ! -perm /a+x respectivamente).

Poda: omisión de archivos y subdirectorios

Copie el contenido de /source-dir a /dest-dir, pero omita los archivos y directorios llamados .snapshot (y todo lo que haya en ellos). También omite los archivos o directorios cuyo nombre termina 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 aquí es que la expresión anterior a -prune coincida con las cosas que se van a podar. Sin embargo, la acción -prune en sí devuelve verdadero, por lo que el siguiente -o asegura que el lado derecho se evalúe solo para los directorios a los que no se aplicó la poda. El contenido de los directorios podados ni siquiera se visita, por lo que su contenido es irrelevante. La expresión del lado derecho de -o está entre paréntesis solo por claridad. Esto enfatiza que la acción -print0 tiene lugar solo para las cosas a las que no se aplicó -prune. Debido a que la condición and predeterminada entre las pruebas se une más fuertemente que -o, este es el valor predeterminado de todos modos, pero los paréntesis ayudan a mostrar lo que está sucediendo.

Dado el siguiente directorio de proyectos y sus directorios administrativos SCM asociados, realice 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

Salida de ejemplo:

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 búsqueda innecesaria en directorios que ya se han encontrado (por ejemplo, no buscamos en project3/src porque ya encontramos project3/.svn), pero asegura que se encuentren los directorios hermanos (project2 y project3).

Otros ejemplos útiles

Buscar varios tipos de archivos.

$ find /tmp -type f,d,l

Buscar archivos, directorios y enlaces simbólicos en el directorio /tmp, pasando estos tipos como una lista separada por comas (extensión GNU), que de otro modo sería equivalente a la forma más larga, pero más portable:

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

Buscar archivos con el nombre "needle" y detenerse inmediatamente cuando encontremos el primero.

$ find / -name needle -print -quit

Demostrar la interpretación de los directivos de formato %f y %h de la acción -printf para algunos casos límite. Aquí hay un ejemplo que incluye algo de salida.

$ 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 sale con estado 0 si todos los archivos se procesan correctamente, mayor que 0 si se producen errores. Esta es una descripción deliberadamente muy amplia, pero si el valor de retorno es distinto de cero, no debe confiar en la corrección de los resultados de find.

Cuando se produce algún error, find puede detenerse inmediatamente, sin completar todas las acciones especificadas. Por ejemplo, es posible que no se hayan examinado algunos puntos de inicio o que algunas invocaciones de programas pendientes para -exec ... {} + o -execdir ... {} + no se hayan realizado.

HISTORIA

Un programa find apareció en la versión 5 de Unix como parte del proyecto Programmer's Workbench y fue escrito por Dick Haight. Doug McIlroy's A Research UNIX Reader: Annotated Excerpts from the Programmer’s Manual, 1971-1986 proporciona algunos detalles adicionales; puede leerlo en línea en [https://www.cs.dartmouth.edu/~doug/reader.pdf].

GNU find fue escrito originalmente 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.

COMPATIBILIDAD

A partir de findutils-4.2.2, los metacaracteres de la shell (`*', `?' o `[]' por ejemplo) utilizados en los patrones de nombres de archivo coinciden con un punto inicial (. ), porque la interpretación 126 de IEEE POSIX lo requiere.

A partir de findutils-4.3.3, -perm /000 ahora coincide con todos los archivos en lugar de ninguno.

Las marcas de tiempo de 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 se detendrá inmediatamente. Anteriormente, el estado de salida de find no se veía afectado por el fallo de -delete. Característica Agregado en También ocurre 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 estado en desuso desde findutils-4.2.21, que se lanzó en 2005.

NO SON ERRORES

Sorpresas en la precedencia de los operadores

El comando find . -name afile -o -name bfile -print nunca imprimirá afile porque en realidad 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 especifica un operador entre las pruebas, se asume -a.

"error de mensaje: los paths deben preceder a la expresión" $ find . -name *.c -print find: paths deben preceder a la expresión find: posible patrón sin comillas después del predicado `-name'?

Esto ocurre cuando el 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 a la línea de comandos a find de la siguiente manera: find . -name frcode.c locate.c word_io.c -print Ese comando, por supuesto, no funcionará, porque el predicado -name permite exactamente solo un patrón como argumento. En lugar de hacer esto, debe encerrar el patrón entre comillas o escapar el comodín, lo que permitirá que find use el patrón con el comodín durante la búsqueda de nombres de archivo que coincidan en lugar de los nombres de archivo expandidos por el shell principal: $ find . -name '*.c' -print $ find . -name *.c -print

ERRORES

Existen problemas de seguridad inherentes al comportamiento que especifica el estándar POSIX para find, que por lo tanto no se pueden solucionar. Por ejemplo, la acción -exec es inherentemente insegura, y se debe usar -execdir en su lugar.

La variable de entorno LC_COLLATE no tiene ningún efecto en la acción -ok.

INFORMAR DE ERRORES

Ayuda en línea de GNU findutils: [https://www.gnu.org/software/findutils/#get-help] Informe cualquier error de traducción a [https://translationproject.org/team/]

Informe cualquier otro problema a través del formulario en el 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]

DERECHOS DE AUTOR

Copyright © 1990–2024 Free Software Foundation, Inc. Licencia GPLv3+: GNU GPL versión 3 o posterior [https://gnu.org/licenses/gpl.html]. Este es un software libre: es libre de cambiarlo y redistribuirlo. No hay GARANTÍA, en la medida permitida por la ley.


CONSULTAR 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] o disponible localmente a través de: info find