- trixie-backports 4.31.0-1~bpo13+1
- testing 4.32.4-1
- unstable 4.32.4-1
| FIND(1) | General Commands Manual | FIND(1) |
NOMBRE¶
find - buscador de archivos en un árbol de directorios
SINOPSIS¶
- find [-H] [-L] [-P] [-D opciones-de-depuración]
- [-Onivel] [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 estas opciones se consideran nombres de archivos o directorios que se examinarán, hasta el primer argumento que comience por «-», «(» 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 -print (aunque probablemente debería considerar usar -print0 en su lugar si la salida va a leerla otro programa).
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.
- -Onivel
- 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 que requieren información del inodo. En muchas versiones modernas de Unix, readdir() devuelve los tipos de archivo, por lo que estos predicados son más rápidos de evaluar que los que necesitan consultar primero los metadatos del archivo mediante stat. Si se utiliza el predicado -fstype FOO y se especifica un tipo de sistema de archivos FOO desconocido (es decir, que no figura en /etc/mtab) cuando se inicia 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.
- The re-ordering of operations performed by the cost-based optimizer can result in user-visible behaviour change. For example, the -readable and -empty predicates are sensitive to re-ordering. If they are run in the order -empty -readable, an error message will be issued for unreadable directories. If they are run in the order -readable -empty no error message will be issued. This is the reason why such operation re-ordering is not performed at the default optimisation level.
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, -fls, -fprint, -fprint0, -fprintf, -ls, -ok, -okdir, -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.
- The file argument is mandatory. One can use -files0-from - to read the list of starting points from the standard input stream, and e.g. from a pipe. In this case, the actions -ok and -okdir are not allowed, because they would obviously interfere with reading from standard input in order to get a user confirmation.
- 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.
- The processing of the starting points is otherwise as usual, e.g. find will recurse into subdirectories unless otherwise prevented. To process only the starting points, one can additionally pass -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 en niveles inferiores a niveles (un entero no negativo). Usar -mindepth 1 significa procesar todos los archivos excepto los puntos de inicio.
- -mount
- Ignora los archivos de otros dispositivos.
- -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
- Don't descend into directories on other devices.
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
- Como -newer, pero comprueba si la hora del último acceso al archivo actual es más reciente que la de la última modificación de datos del archivo referencia. En otras palabras, esta prueba equivale a -neweram. Falla si las marcas de tiempo son iguales. Si referencia es un enlace simbólico y está activa la opción -H o -L, 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
- Como -newer, pero comprueba si 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 referencia. En otras palabras, esta prueba equivale a -newercm. Falla si las marcas de tiempo son iguales. Si referencia es un enlace simbólico y está activa la opción -H o -L, 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 identificador numérico de grupo del archivo es menor que, mayor que o exactamente igual a 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) concuerda con el patrón de shell patrón. Como 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 es usar únicamente una barra como patrón (`-name /`), pues se trata de una cadena válida para concordar con el directorio raíz `/` (ya que el nombre base de `/` es `/`). Se emite una advertencia si un patrón de -name no puede concordar con ningún nombre, salvo que esté definida la variable de entorno POSIXLY_CORRECT o se utilice 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
- Succeeds if the time of the last data modification of the current file is more recent than that of the last data modification of the reference file. In other words, this test is equivalent to -newermm, though only -newer is in the POSIX standard. Fails if the timestamps are equal. If reference is a symbolic link and the -H option or the -L option is in effect, then the time of the last data modification of the file it points to is always used.
- -newerXY referencia
- Succeeds if timestamp X of the file being considered is newer than the timestamp Y of the file reference. Fails if the timestamps are equal. The letters X and Y can be any of the following letters:
-
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
- File name matches regular expression pattern. This is a match on the whole path, not a search. For example, to match a file named ./fubar3, you can use the regular expression `.*bar.' or `.*b.*3', but not `f.*r3'. The regular expressions understood by find are by default Emacs Regular Expressions, but this can be changed with the -regextype option.
- -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 `-` indican, respectivamente, mayor que y menor que, como es habitual; es decir, no coincide un tamaño exactamente igual a n unidades. IMPORTANTE: 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 concuerda con archivos vacíos; el segundo concuerda 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 numérico de usuario del archivo es menor que, mayor que o exactamente igual a n.
- -used n
- El último acceso al archivo tuvo lugar menos de, más de 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 {} +
- Like -exec, but the specified command is run from the subdirectory containing the matched file, which is not normally the directory in which you started find. Each selected file name except for the root directory "/" is prepended with "./". As with -exec, the {} should be quoted if find is being invoked from a shell. This a much more secure method for invoking commands, as it avoids race conditions during resolution of the paths to the matched files. As with the -exec action, the `+' form of -execdir will build a command line to process more than one matched file, but any given invocation of command will only list files that exist in the same subdirectory. If you use this option, you must ensure that your PATH environment variable does not reference `.'; otherwise, an attacker can run any commands they like by leaving an appropriately-named file in a directory in which you will run -execdir. The same applies to having entries in PATH which are empty or which are not absolute directory names. If any invocation with the `+' form returns a non-zero value as exit status, then find returns a non-zero exit status. If find encounters an error, this can sometimes cause an immediate exit, so some pending commands may not be run at all. The result of the action depends on whether the + or the ; variant is being used; -execdir command {} + always returns true (though failed commands will affect find's eventual exit status), while -execdir command {} ; returns true only if command returns 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
- True; list current file in ls -dils format on standard output. The block counts are of 1 KiB blocks, unless the environment variable POSIXLY_CORRECT is set, in which case 512-byte blocks are used. See the UNUSUAL FILENAMES section for information about how unusual characters in filenames are handled.
- -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.
- Verdadero; muestra el nombre completo del archivo en la salida estándar, seguido de un carácter de nueva línea. Si canaliza la salida de find a otro programa y existe la menor posibilidad de que los archivos que busca contengan un carácter de nueva 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 cómo se gestionan 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 carácter de nueva 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.
- -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 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 significar que los indicadores no funcionen 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
- Señal acústica.
- \b
- Carácter de retroceso.
- \c
- Interrumpe inmediatamente la impresión de este formato y vacía la salida pendiente.
- \f
- Avance de página.
- \n
- Nueva línea.
- \r
- Retorno de carro.
- \t
- Tabulador horizontal.
- \v
- Tabulador vertical.
- \0
- Carácter NUL de ASCII.
- \\
- Una barra inversa 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 se imprimen ambos.
- %%
- Un signo de porcentaje literal «%».
- %a
- La fecha y hora del último acceso al archivo, en el formato devuelto por la función C ctime(3).
- %Ak
- La fecha y hora del último acceso al archivo en el formato especificado por k, que puede ser `@' o una directiva para la función C strftime(3). A continuación se muestra una lista incompleta de los posibles valores de k. Consulte la documentación de strftime(3) para ver 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 biblioteca strftime(3).
- @
- seconds since Jan. 1, 1970, 00:00 GMT, with fractional part (see below).
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
- Second (00.00 .. 61.00). There is a fractional part (see below).
- T
- hora en formato de 24 horas (hh:mm:ss.xxxxxxxxxx); véanse más abajo los detalles de la parte fraccionaria del campo de segundos.
- +
- Date and time, separated by `+', for example `2004-04-28+22:22:05.0'. This is a GNU extension. The time is given in the current timezone (which may be affected by setting the TZ environment variable). The seconds field includes a fractional part (see below).
- X
- Representación de la hora de la configuración regional (H:M:S). El campo de segundos incluye una parte fraccionaria.
- Z
- time zone (e.g., EDT), or nothing if no time zone is determinable.
La longitud y la precisión de la parte fraccionaria de los campos de segundos no están especificadas. En general, su longitud variará entre versiones de findutils y entre sistemas. Por tanto, no es prudente presuponer que ese campo tenga una longitud determinada. La longitud de este campo no suele servir como indicación de la precisión de las marcas de tiempo del sistema de archivos subyacente.
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
- The amount of disk space used for this file in 1 KiB blocks. Since disk space is allocated in multiples of the filesystem block size this is usually greater than %s/1024, but it can also be smaller if the file is a sparse file.
- %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
- File's permissions (in symbolic form, as for ls). This directive is supported in findutils 4.2.5 (2004) and later.
- %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
- List; both expr1 and expr2 are always evaluated. The value of expr1 is discarded; the value of the list expr1 , expr2 is the value of expr2. The comma operator can be useful for searching for several different types of thing, but traversing the filesystem hierarchy only once. The -fprintf action can be used to list the various matched items into several different output files.
Please note that -a when specified implicitly (for example by two tests appearing without an explicit operator between them) or explicitly has higher precedence than -o. This means that find afile bfile -name afile -o -name bfile -print will never print afile.
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
- Unusual characters are always escaped. White space, backslash, and double quote characters are printed using C-style escaping (for example `\f', `\"'). Other unusual characters are printed using an octal escape. Other printable characters (for -ls and -fls these are the characters between octal 041 and 0176) are printed as-is.
- -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¶
For closest compliance to the POSIX standard, you should set the POSIXLY_CORRECT environment variable. The following options are specified in the POSIX standard (IEEE Std 1003.1-2024 Edition):
- -H
- Esta opción es compatible.
- -L
- Esta opción es compatible.
- -name
- This option is supported, but POSIX conformance depends on the POSIX conformance of the system's fnmatch(3) library function. As of findutils-4.2.2 (2004), shell metacharacters (`*', `?' or `[]' for example) match a leading `.', because IEEE PASC interpretation 126 requires this. This is a change from previous versions of 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. Anular la definición de la variable de entorno POSIXLY_CORRECT ya no permite aceptar la antigua variante +mode de /mode.
- Otras primarias
- The primaries -atime, -ctime, -depth, -exec, -group, -links, -mount, -mtime, -nogroup, -nouser, -ok, -path, -print, -prune, -size, -user and -xdev are all supported.
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.
ERRORES¶
Las acciones -ok y -okdir solicitan la confirmación del usuario escribiendo un mensaje en la salida de error estándar. Estos mensajes de solicitud no son mensajes de error. La mayoría de los mensajes de error que produce find se explican por sí mismos. A veces, los mensajes de error incluyen un nombre de archivo. En ese caso, el nombre se entrecomilla para evitar que los caracteres especiales que pueda contener provoquen cambios no deseados en el estado del terminal. Los mensajes de error que produce find están concebidos para ser, en su mayoría, autoexplicativos. Aquí ofrecemos explicaciones breves de algunos de ellos. Esta lista no es exhaustiva.
predicado no válido «-foo»¶
Esto significa que la línea de órdenes de find incluía algo que empezaba por un guion u otro carácter especial (en este caso, -foo). El programa find intentó interpretarlo como una prueba, una acción o una opción, pero no lo reconoció. Si debía ser una prueba, compruebe lo indicado en la documentación. Si, por el contrario, la cadena es el nombre de un archivo expandido a partir de un comodín (por ejemplo, porque hay un * en la línea de órdenes), considere usar ./* o simplemente ..
predicado adicional inesperado¶
Esto suele ocurrir cuando hay un paréntesis sobrante en la línea de órdenes (por ejemplo, find . -print )).
falló la comprobación de coherencia de la función de biblioteca fnmatch()¶
Envíe un informe de fallo. Es posible que le hagan preguntas sobre su sistema y, si compiló usted mismo el código de findutils, debería conservar el árbol de compilación. La explicación más probable es que su sistema tenga una implementación defectuosa de fnmatch que se parece lo suficiente a la versión de GNU como para engañar a configure, pero que no funciona correctamente.
no se puede crear un proceso mediante fork¶
Esto suele ocurrir si se usa la acción -exec o alguna similar (-ok, etc.), pero el sistema se ha quedado sin espacios disponibles para procesos. Puede deberse a que el sistema esté muy ocupado y haya alcanzado el límite máximo de procesos, o a que exista un límite de recursos que se haya alcanzado. Compruebe si hay procesos descontrolados (con ps o pstree, si es posible). Normalmente, algunos espacios para procesos están reservados para el usuario root.
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.
- Setting this variable also turns off warning messages (that is, implies -nowarn) by default, because POSIX requires that apart from the output for -ok, all messages printed on standard error are diagnostics and must result in a non-zero exit status.
- 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¶
Simple `find|xargs` approach¶
- •
- Busca archivos llamados core en el directorio /tmp o debajo
de él y los elimína.
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.
$ find /tmp -name core -type f -print | xargs /bin/rm -f
Safer `find -print0 | xargs -0` approach¶
- •
- 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.
La prueba -name se realiza antes que la prueba -type para evitar tener que llamar a stat(2) en cada archivo.
$ find /tmp -name core -type f -print0 | xargs -0 /bin/rm -f
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:
The use of `-files0-from -' means to read the names of the starting points from standard input, i.e., from the pipe; and -maxdepth 0 ensures that only explicitly those entries are examined without recursing into directories (in the case one of the starting points is one).
$ proggy | find -files0-from - -maxdepth 0 -type f -empty
Ejecutar una orden para cada archivo¶
- •
- Ejecuta archivo en cada archivo dentro o debajo del directorio
actual.
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.
$ find . -type f -exec file '{}' \;
In many cases, one might prefer the `-exec ... +' or better the `-execdir ... +' syntax for performance and security reasons.
Traversing the filesystem just once — for 2 different actions¶
- •
- 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.
This example uses the line-continuation character '\' on the first two lines to instruct the shell to continue reading the command on the next line.
$ find / \
\( -perm -4000 -fprintf /root/suid.txt '%#m %u %p\n' \) , \
\( -size +100M -fprintf /root/big.txt '%-10s %p\n' \)
Búsqueda de archivos por antigüedad¶
- •
- Buscará archivos en su directorio personal que se hayan modificado
en las últimas veinticuatro horas.
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.
$ find $HOME -mtime 0
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.
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.
$ find . -perm 664
- 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).
Esto buscará un archivo con modo 0777, por ejemplo.
$ find . -perm -664
- 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.
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.
$ find . -perm /220 $ find . -perm /u+w,g+w $ find . -perm /u=w,g=w
- Busca archivos con permisos de escritura tanto para el propietario como
para el grupo.
Ambas órdenes hacen lo mismo.
$ find . -perm -220 $ find . -perm -g+w,u+w
- Búsqueda más elaborada de permisos.
These two commands both search for files that are readable for everybody (-perm -444 or -perm -a+r), have at least one write bit set (-perm /222 or -perm /a+w) but are not executable for anybody (! -perm /111 or ! -perm /a+x respectively).
$ find . -perm -444 -perm /222 \! -perm /111 $ find . -perm -a+r -perm /a+w \! -perm /a+x
Pruning — omitting files and subdirectories¶
- Copy the contents of /source-dir to /dest-dir, but omit
files and directories named .snapshot (and anything in them). It
also omits files or directories whose name ends in `~', but not their
contents.
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.
$ cd /source-dir $ find . -name .snapshot -prune -o \( \! -name '*~' -print0 \) \
| cpio -pmd0 /dest-dir
- 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:
Directorios de ejemplo:
$ find repo/ \
\( -exec test -d '{}/.svn' \; \ -or -exec test -d '{}/.git' \; \ -or -exec test -d '{}/CVS' \; \ \) -print -prune
Output:
repo/project1/CVS repo/gnu/project2/.svn repo/gnu/project3/.svn repo/gnu/project3/src/.svn repo/project4/.git
In this example, -prune prevents unnecessary descent into directories that have already been discovered (here we do not search project3/src because we already found project3/.svn), but ensures sibling directories (project2 and project3) are found.
repo/project1 repo/gnu/project2 repo/gnu/project3 repo/project4
Las opciones -xdev y -mount¶
Normalmente, find busca dentro de los directorios que son puntos de montaje. En este ejemplo, tree/bound1 es un punto de montaje:
$ find tree -printf 'device: %D path: %p\n' device: 40 path: tree device: 64770 path: tree/bound1 device: 64770 path: tree/bound1/on-another-fs
La opción -xdev hace que find visite el punto de montaje, pero no los elementos que contiene ese directorio:
$ find tree -xdev -printf 'device: %D path: %p\n' device: 40 path: tree device: 64770 path: tree/bound1
Si se especifica -mount, no se visitará el punto de montaje en absoluto:
$ find tree -mount -printf 'device: %D path: %p\n' device: 40 path: tree
Otros ejemplos útiles¶
- Búsqueda de varios tipos de archivo
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,d,l
$ 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¶
A find program appeared in Version 5 Unix as part of the Programmer's Workbench project and was written by Dick Haight. Doug McIlroy's A Research UNIX Reader: Annotated Excerpts from the Programmer's Manual, 1971–1986 provides some additional details; you can read it on-line at <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.
ADVERTENCIAS¶
Muchas de las características de GNU find no están implementadas en otros sistemas. Consulte COMPATIBILITY para obtener información sobre la compatibilidad entre esta versión de GNU find, las versiones anteriores de GNU find y otras implementaciones de find. Consulte también la sección NON-BUGS, donde se explican algunos comportamientos que pueden sorprender, pero que en realidad no son errores.
Posibles cambios futuros en la impresión de nombres de archivo¶
La acción -ls entrecomilla los caracteres no imprimibles de los nombres de archivo mediante secuencias de escape con barra invertida, similares a las de C. Esto podría cambiar en el futuro si, por ejemplo, se armoniza el tratamiento de los caracteres no imprimibles en -ls, -fls, -print, -fprint, -printf y -fprintf.
La edición 8 del estándar POSIX indica que, en el futuro, podrían cambiar los requisitos para tratar los saltos de línea en los nombres de archivo mostrados:
- Si se indica a esta utilidad que muestre una ruta que contenga bytes cuyo valor codificado corresponda a un carácter <de salto de línea> cuando <salto de línea> sea un terminador o separador en el formato de salida utilizado, se recomienda que las implementaciones traten esta situación como un error. Una versión futura de este estándar podría exigir que las implementaciones la traten como tal.
Una forma de evitar futuros problemas sería usar -print0 cuando los nombres de archivo puedan contener caracteres de salto de línea.
COMPATIBILIDADES¶
Nuevas características¶
| Característica | Añadido en | Año | También aparece en |
| -files0-from | 4.9.0 | 2022 | |
| -newerXY | 4.3.3 | 2007 | BSD |
| -D | 4.3.1 | 2006 | |
| -O | 4.3.1 | 2006 | |
| -readable | 4.3.0 | 2005 | |
| -writable | 4.3.0 | 2005 | |
| -executable | 4.3.0 | 2005 | |
| -regextype | 4.2.24 | 2004 | |
| -exec ... + | 4.2.12 | 2005 | POSIX |
| -execdir | 4.2.12 | 2005 | BSD |
| -okdir | 4.2.12 | 2005 | |
| -samefile | 4.2.11 | 2004 | |
| -H | 4.2.5 | 2004 | POSIX |
| -L | 4.2.5 | 2004 | POSIX |
| -P | 4.2.5 | 2004 | BSD |
| -delete | 4.2.3 | 2004 | |
| -quit | 4.2.3 | 2004 | |
| -d | 4.2.3 | 2004 | BSD |
| -wholename | 4.2.0 | 2003 | |
| -iwholename | 4.2.0 | 2003 | |
| -ignore_readdir_race | 4.2.0 | 2003 | |
| -fls | 4.0 | 1994 | |
| -ilname | 3.8 | 1993 | |
| -iname | 3.8 | 1993 | POSIX (de la edición 8, IEEE Std 1003.1-2024) |
| -ipath | 3.8 | 1993 | |
| -iregex | 3.8 | 1993 | |
| -print0 | 2.0 | 1990 | POSIX (de la edición 8, IEEE Std 1003.1-2024) |
Functional Changes¶
| Version | Año | Cambio |
| 4.11 | 2026 | Como exige la versión más reciente de POSIX (edición 8, IEEE Std 1003.1-2024), la prueba -mount ya no es sinónimo de -xdev y ahora omite los propios puntos de montaje. |
| 4.5.12 | 2013 | The syntax -perm +MODE is removed, in favour of -perm /MODE. The +MODE syntax had been deprecated since findutils-4.2.21 (2005). |
| 4.3.11 | 2007 | The -delete action sets find's exit status to a nonzero value when it fails. However, find will not exit immediately. Previously, find's exit status was unaffected by the failure of -delete. |
| 4.3.3 | 2007 | Nanosecond-resolution timestamps; seconds fields are no longer integers. |
| 4.3.3 | 2007 | -perm /000 now matches all files instead of none. |
| 4.2.2 | 2004 | Shell metacharacters (`*', `?' or `[]' for example) used in filename patterns match a leading `.', because IEEE POSIX interpretation 126 requires this. |
NO ERRORES¶
Sorpresas sobre la precedencia de operadores¶
The command find . -name afile -o -name bfile -print will never print afile because this is actually equivalent to find . -name afile -o \( -name bfile -a -print \). Remember that the precedence of -a is higher than that of -o and when there is no operator specified between tests, -a is assumed.
“paths must precede expression” error message¶
$ 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:
Los temas generales sobre el paquete GNU findutils se tratan en la lista de correo bug-findutils:COPYRIGHT¶
Copyright © 1990–2026 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
<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 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.
| 12 Octubre 2025 | findutils |