El comando de Linux y Unix encontrar ejecuta una búsqueda de archivos en una jerarquía de directorios.
Sintaxis para encontrar mando:
encontrar ruta … expresión
Descripción
Esta página de manual documenta la versión GNU de encontrar . El comando encontrar busca el árbol del directorio enraizado en cada nombre de archivo dado mediante la evaluación de la expresión dada de izquierda a derecha, de acuerdo con las reglas de precedencia (consulte la sección sobre Operadores a continuación), hasta que se conozca el resultado; en otras palabras, el lado izquierdo es falso para y operaciones, cierto para o , en cuyo punto encontrar pasa al siguiente nombre de archivo.
El primer argumento que comienza con:
- -
- ( o),
- !
Se toma como principio de la expresión; cualquier argumento anterior es una ruta para buscar, y cualquier argumento posterior es el resto de la expresión. Si no se dan rutas, se usa el directorio actual. Si no se da ninguna expresión, la expresión -impresión se utiliza
los encontrar el comando sale con el estado 0 si todos los archivos se procesan correctamente, mayor que 0 si se producen errores.
Expresiones
La expresión se compone de opciones (que afectan el funcionamiento general en lugar del procesamiento de un archivo específico y siempre devuelven verdadero), pruebas (que devuelven un valor verdadero o falso) y acciones (que tienen efectos secundarios y devuelven un verdadero o valor falso), todos separados por operadores. La expresion -y Se asume donde se omite el operador. Si la expresión no contiene más acciones que -ciruela pasa , entonces -impresión se realiza en todos los archivos para los que la expresión es verdadera.
Opciones
Todas las opciones siempre devuelven verdadero. Siempre tienen efecto, en lugar de ser procesados solo cuando se alcanza su lugar en la expresión. Por lo tanto, para mayor claridad, es mejor colocarlos al comienzo de la expresión.
| -daystart | Medir tiempos (para -amin, -atime, -cmin, -ctime, -mmin, y -mtime ) desde el principio de hoy en lugar de hace 24 horas. |
| -profundidad | Procese los contenidos de cada directorio antes que el propio directorio. |
| -seguir | Dereferencia de enlaces simbólicos. Implica -nuevo . |
| -ayuda o --ayuda | Imprima un resumen del uso de la línea de comandos de encontrar y salir. |
| -máxima profundidad número | Desciende en la mayoría de los niveles (un entero no negativo) de directorios debajo de los argumentos de la línea de comando. La expresion -maxdepth 0 significa solo aplicar las pruebas y acciones a los argumentos de la linea de comando. |
| -mindepth número | No aplique ninguna prueba o acción a niveles menores que el número (un entero no negativo). La expresion -mindepth 1 significa procesar todos los archivos excepto los argumentos de la línea de comando. |
| -montar | No descienda directorios en otros sistemas de archivos. Un nombre alternativo para -xdev , por compatibilidad con algunas otras versiones de encontrar . |
| -nuevo | No optimice asumiendo que los directorios contienen 2 subdirectorios menos que su recuento de enlaces duros. * |
| -versión o --versión | Imprimir el encontrar Número de versión y salida. |
| -xdev | No descienda directorios en otros sistemas de archivos. |
* Esta opción es necesaria cuando se buscan sistemas de archivos que no siguen la convención de enlace de directorio de Unix, como los sistemas de archivos de CD-ROM o MS-DOS o los 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. (periodo) de entrada. Además, sus subdirectorios (si los hay) tienen cada uno. Entrada vinculada a ese directorio.
Cuando encontrar está examinando un directorio, después de que haya establecido dos subdirectorios menos que el recuento de enlaces del directorio, sabe que el resto de las entradas en el directorio no son directorios ( hoja archivos en el árbol de directorios). Si solo es necesario examinar los nombres de los archivos, no es necesario establecerlos; Esto da un aumento significativo en la velocidad de búsqueda.
Pruebas
Los argumentos numéricos se pueden especificar como:
| + n | Para mayor que norte. |
| -norte | Por menos de norte. |
| norte | Para exactamente norte. |
| -anamin n | El archivo fue accedido por última vez norte hace minutos. |
| -un nuevo archivo | Último acceso al archivo más recientemente que expediente fue modificado. -Anewer se ve afectado por -follow solo si -follow aparece antes de -ewew en la línea de comando. |
| -tiempo n | El archivo fue accedido por última vez norte * Hace 24 horas. |
| -cmin n | El estado del archivo fue cambiado por última vez norte hace minutos. |
| -cnewer archivo | El estado del archivo se modificó por última vez más recientemente que el archivo modificado.- cnewer es afectado por -seguir sólo si -seguir viene antes -cnewer en la linea de comando |
| -tiempo n | El estado del archivo fue cambiado por última vez norte * Hace 24 horas. |
| -vacío | El archivo está vacío y es un archivo normal o un directorio. |
| -falso | Siempre falso. |
| -fstype tipo | El archivo está en un sistema de archivos del tipo especificado. Los tipos de sistemas de archivos válidos varían entre las diferentes versiones de Unix; una lista incompleta de 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 usar -printf con la directiva% F para ver los tipos de sus sistemas de archivos. |
| -gid n | El ID del grupo numérico del archivo es norte . |
| -grupo gname | El archivo pertenece al grupo gname (ID numérica de grupo permitida). |
| -nombre patrón | Como -lname, pero la coincidencia no distingue entre mayúsculas y minúsculas. |
| -iname patrón | Me gusta -nombre , pero el partido no distingue entre mayúsculas y minúsculas. Por ejemplo, los patrones. fo * y ¿¿F?? coincide con los nombres de los archivos Foo , FOO , foo , para ti , etc. |
| -inum n | El archivo tiene número de inodo norte . |
| -ipath patrón | Me gusta -camino , pero el partido no distingue entre mayúsculas y minúsculas. |
| -iregex patrón | Como -regex, pero la coincidencia no distingue entre mayúsculas y minúsculas. |
| -enlaces n | Archivo tiene norte campo de golf. |
| -lname patrón | Archivo es un enlace simbólico cuyo contenido coincide con el patrón de shell. Los metacaracteres no se tratan. / o . especialmente. |
| -minmin n | Los datos del archivo fueron modificados por última vez. norte hace minutos. |
| -mtime n | Los datos del archivo fueron modificados por última vez. norte * Hace 24 horas. |
| -nombre patrón | La base del nombre de archivo (la ruta con los directorios principales eliminados) coincide con el patrón de shell. Los metacaracteres (*, ?y ) no coinciden con . al inicio del nombre base. Para ignorar un directorio y los archivos debajo de él, use -ciruela pasa ; ver un ejemplo en la descripción de -camino . |
| -nuevo archivo | El archivo fue modificado más recientemente que expediente . La expresion -más nuevo es afectado por -seguir sólo si -seguir viene antes -más nuevo en la linea de comando |
| -nouser | Ningún usuario corresponde al ID de usuario numérico del archivo. |
| -nogrupo | Ningún grupo corresponde al ID numérico del grupo. |
| -path patrón | El nombre del archivo coincide con el patrón de shell modelo . Los metacaracteres no se tratan. / o . especialmente; así por ejemplo,encontrar . -path './sr*sc imprimirá una entrada para un directorio llamado ./src/misc (si existe). Para ignorar un árbol de directorios completo, use -ciruela pasa En lugar de revisar cada archivo en el árbol. Por ejemplo, para omitir el directorio src / emacs y todos los archivos y directorios debajo de él, e imprimir los nombres de los otros archivos encontrados, haga algo como esto:encontrar . -path './src/emacs' -prune -o -print |
| -perm modo | Los bits de permiso del archivo son exactamente modo (octal o simbólico). Los modos simbólicos usan el modo 0 como punto de partida. |
| -perm -modo | Todos los bits de permiso modo se establecen para el archivo. |
| -perm + modo | Cualquiera de los bits de permiso modo se establecen para el archivo. |
| -regex patrón | El nombre del archivo coincide con la expresión regular modelo . Esta es una coincidencia en todo el camino, no una búsqueda. Por ejemplo, para hacer coincidir un archivo llamado ./fubar3, puede usar la expresión regular .*bar. o . * b. * 3, pero no b. * r3. |
| -size n bckw | Usos de archivo norte unidades de espacio. Las unidades son bloques de 512 bytes por defecto o si b sigue norte , bytes si c sigue norte , kilobytes si k sigue norte , o palabras de 2 bytes si w sigue norte . El tamaño no cuenta los bloques indirectos, pero sí cuenta los bloques en archivos dispersos que no están realmente asignados. |
| -cierto | Siempre cierto. |
| -tipo c | Archivo es de tipo do : |
| segundo | Bloque (buffered) especial |
| do | Carácter (sin búfer) especial |
| re | Directorio |
| pag | Tubería con nombre (FIFO) |
| F | Archivo regular |
| l | Enlace simbólico |
| s | Enchufe |
| re | puerta (Solaris) |
| -id no | El ID de usuario numérico del archivo es norte . |
| -utilizado n | El archivo fue accedido por última vez norte Días después de su última modificación. |
| -usuario uname | El archivo es propiedad del usuario tu nombre (ID de usuario numérico permitido). |
| -xtype c | Lo mismo que -tipo A menos que el archivo sea un enlace simbólico. Para enlaces simbólicos: si -seguir no se ha dado, verdadero si el archivo es un enlace a un archivo de tipo do ; Si -seguir ha sido dado, cierto si do es l En otras palabras, para enlaces simbólicos, -tipo comprueba el tipo de archivo que -tipo no comprueba |
Comportamiento
-exec mando ;
Ejecutar mando ; true si se devuelve 0 estados. Todos los siguientes argumentos paraencontrar se toman como argumentos para el comando hasta que un argumento que consiste en ';' se encuentra La cadena `{} 'se reemplaza por el nombre del archivo actual que se procesa en todas partes en los argumentos del comando, no solo en los argumentos donde está solo, como en algunas versiones deencontrar. Es posible que ambas construcciones deban escaparse (con un ` ') o cotizarse para protegerlas de la expansión por parte del shell. El comando se ejecuta en el directorio de inicio.
-fls expediente
Cierto; como -ls pero escribe a expediente como -huella.
-huella expediente
Cierto; imprimir el nombre completo del archivo en el archivo expediente . Si expediente no existe cuandoencontrar se ejecuta, se crea; Si existe, se trunca. Los nombres de archivo `` / dev / stdout '' y `` / dev / stderr '' se manejan especialmente; se refieren a la salida estándar y la salida de error estándar, respectivamente.
-huella0 expediente
Cierto; como -print0 pero escribe a expediente como -huella.
-fprintf expediente formato
Cierto; como -printf pero escribe a expediente como -huella.
-De acuerdo mando ;
Como -exec pero pregunte al usuario primero (en la entrada estándar); Si la respuesta no comienza con `y 'o` Y', no ejecute el comando y devuelva falso.
-impresión
Cierto; imprima el nombre completo del archivo en la salida estándar, seguido de una nueva línea.
-print0
Cierto; imprima el nombre completo del archivo en la salida estándar, seguido de un carácter nulo.Esto permite que los nombres de archivos que contienen nuevas líneas sean interpretados correctamente por los programas que procesanencontrar salida.
-printf formato
Cierto; impresión formato en la salida estándar, interpretando escapes ` 'y directivas`%'. Los anchos de campo y las precisiones se pueden especificar como con la función `printf 'C. A diferencia de -print, -printf no agrega una nueva línea al final de la cadena. Los escapes y directivas son:
una
Alarma.
segundo
Retroceso.
do
Detenga inmediatamente la impresión desde este formato y elimine la salida.
F
Forma de alimentación.
orte
Nueva línea.
r
Retorno de carro.
t
Pestaña horizontal
v
Pestaña vertical
\
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.
%una
El último tiempo de acceso del archivo en el formato devuelto por la función C `ctime '.
%UNA k
Último tiempo de acceso al archivo en el formato especificado por k , que es ya sea `@ 'o una directiva para la función C` strftime'. Los valores posibles para k están enlistados debajo; Es posible que algunos de ellos no estén disponibles en todos los sistemas, debido a las diferencias en el "tiempo de respuesta" entre los sistemas.
@
segundos desde el 1 de enero de 1970, 00:00 GMT.
Campos de tiempo:
H
hora (00..23)
yo
hora (01..12)
k
hora (0..23)
l
hora (1..12)
METRO
minuto (00..59)
pag
la mañana o la tarde del local
r
tiempo, 12 horas (hh: mm: ss AP M)
S
segundo (00..61)
T
tiempo, 24 horas (hh: mm: ss)
X
representación del tiempo del local (H: M: S)
Z
zona horaria (por ejemplo, EDT), o nada si no se puede determinar ninguna zona horaria
Campos de fecha:
una
el nombre abreviado del día de la semana de locale (Sun..Sat)
UNA
el nombre completo del día de la semana del locale, longitud variable (domingo .. sábado)
segundo
el nombre abreviado del mes de locale (Jan..Dec)
segundo
Nombre completo del mes de la localidad, longitud variable (enero … diciembre)
do
Fecha y hora de la localidad (sáb 04 nov 12:02:33 EST 1989)
re
día del mes (01..31)
re
fecha (mm / dd / aa)
h
igual que b
j
día del año (001..366)
metro
mes (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 (0..6)
W
Número de la semana del año con el lunes como primer día de la semana (00..53)
X
Representación de fecha del entorno local (mm / dd / aa)
y
los dos últimos dígitos del año (00..99)
Y
año (1970 …)
%segundo
Tamaño del archivo en bloques de 512 bytes (redondeado hacia arriba).
%do
Hora del último cambio de estado del archivo en el formato devuelto por la función C `ctime '.
%DO k
Hora del último cambio de estado del archivo en el formato especificado por k , que es lo mismo que para% A.
%re
Profundidad del archivo en el árbol de directorios; 0 significa que el archivo es un argumento de línea de comando.
%F
Nombre del archivo con los directorios principales eliminados (solo el último elemento).
%F
Tipo del sistema de archivos en el que se encuentra el archivo; Este valor se puede utilizar para -fstype.
%sol
Nombre del grupo del archivo, o ID del grupo numérico si el grupo no tiene nombre.
%SOL
ID del grupo numérico del archivo.
% h
Principales directorios del nombre del archivo (todos menos el último elemento).
% H
Argumento de línea de comando bajo el cual se encontró el archivo.
%yo
Número de inodo del archivo (en decimal).
% k
Tamaño del archivo en bloques de 1K (redondeado hacia arriba).
% l
Objeto del enlace simbólico (cadena vacía si el archivo no es un enlace simbólico).
%metro
Bits de permiso del archivo (en octal).
%norte
Número de enlaces duros para archivar.
%pag
Nombre del archivo.
%PAG
Nombre del archivo con el nombre del argumento de la línea de comando bajo el cual se encontró eliminado.
% s
Tamaño del archivo en bytes.
% t
Hora de la última modificación del archivo en el formato devuelto por la función C `ctime '.
% T k
Última hora de modificación del archivo en el formato especificado por. k , que es lo 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.
Un carácter `% 'seguido de cualquier otro carácter se descarta (pero el otro carácter se imprime).
-ciruela pasa
Si no se da la profundidad, verdadero; No descienda el directorio actual.Si se da la profundidad, falso; sin efecto. -ls Cierto; listar el archivo actual en formato `ls -dils 'en la salida estándar. Los recuentos de bloques son de bloques 1K, a menos que se establezca la variable de entorno POSIXLY_CORRECT, en cuyo caso se utilizan bloques de 512 bytes. Listado por orden de precedencia decreciente: ( expr ) Fuerza precedencia. ! expr Cierto si expr Es falso. -no expr Igual que ! expr . expr1 expr2 Y (implícito); expr2 no se evalúa si expr1 Es falso. expr1 -una expr2 Igual que expr1 expr2 . expr1 -y expr2 Igual que expr1 expr2 . expr1 -o expr2 O; expr2 no se evalúa si expr1 es verdad. expr1 -o expr2 Igual que expr1 -o expr2 . expr1 , expr2 Lista; ambos expr1 y expr2 siempre son evaluados. El valor de expr1 se desecha; el valor de la lista es el valor de expr2 . encontrar / inicio -usuario joe
Encuentre todos los archivos en el directorio / inicio que posee el usuario joe. encontrar / usr -name * stat
Encuentre todos los archivos en el directorio / usr que termina en ".stat". encontrar / var / spool -mtime +60
Encuentre todos los archivos en el directorio / var / spool que se modificó hace más de 60 días. buscar / tmp -name core -type f -print | xargs / bin / rm -f
Encontrar archivos nombradosnúcleo en o debajo del directorio/ tmp y eliminarlos.Tenga en cuenta que esto funcionará incorrectamente si hay algún nombre de archivo que contenga nuevas líneas, comillas simples o dobles, o espacios. encuentra / tmp -name core -type f -print0 | xargs -0 / bin / rm -f
Encontrar archivos nombradosnúcleo en o debajo del directorio/ tmp y elimínelos, procesando los nombres de archivos de tal manera que los nombres de archivos o directorios que contengan comillas simples o dobles, espacios o nuevas líneas se manejen correctamente. los-nombre la prueba llega antes de la-tipo Prueba para evitar tener que llamar.stat (2) en cada archivo. encontrar . -type f -exec archivo '{}' ;
Ejecuta `archivo 'en cada archivo en o debajo del directorio actual. Observe que las llaves están entre comillas simples para protegerlas de la interpretación como puntuación de shell shell. El punto y coma está igualmente protegido por el uso de una barra invertida, aunque ';' Podría haber sido utilizado en ese caso también. encuentra / (-perm -4000 -fprintf /root/suid.txt '% # m% u% p n' ), (-size + 100M -fprintf /root/big.txt '% -10s% p n' )
Recorra el sistema de archivos solo una vez, listando los archivos y directorios setuid en/root/suid.txt y archivos grandes en/root/big.txt. encuentra $ HOME -mtime 0
Busque archivos en su directorio de inicio que hayan sido modificados en las últimas veinticuatro horas. Este comando funciona de esta manera porque el tiempo desde la última modificación de un archivo se divide por 24 horas y se descarta cualquier resto. Eso significa que para que coincida-mtime 0, un archivo deberá tener una modificación en el pasado que es menos de 24 horas atrás. encontrar . -permpa 664
Busque archivos que tengan permisos de lectura y escritura para su propietario y grupo, pero que otros usuarios puedan leer pero no escribir. Los archivos que cumplan con estos criterios pero tengan establecidos otros bits de permisos (por ejemplo, si alguien puede ejecutar el archivo) no coincidirán. encontrar . -perm -664
Busque archivos que tengan permisos de lectura y escritura para su propietario y grupo, y que otros usuarios puedan leer, sin tener en cuenta la presencia de bits de permiso adicionales (por ejemplo, el bit ejecutable). Esto coincidirá con un archivo que tiene el modo 0777, por ejemplo. encontrar . -perm / 222
Busque archivos que puedan ser escritos por alguien (su propietario, su grupo o cualquier otra persona). encontrar . -perm / 220 encontrar . -perm / u + w, g + w encontrar . -perm / u = w, g = w
Los tres comandos hacen lo mismo, pero el primero usa la representación octal del modo de archivo y los otros dos usan la forma simbólica. Todos estos comandos buscan archivos que puedan ser escritos por su propietario o su grupo. Los archivos no tienen que ser editables tanto por el propietario como por el grupo para que coincidan; cualquiera de las dos hará encontrar . -perma -220 encontrar . -perm -g + w, u + w
Ambos comandos hacen lo mismo; busque archivos que puedan escribirse tanto por su propietario como por su grupo. encontrar . -perm -444 -perm / 222! -perm / 111 encontrar . -perm -a + r -perm / a + w! -perm / a + x
Ambos comandos buscan archivos legibles para todos (-perm -444 o -perm -a + r), tienen al menos un conjunto de bits de escritura (-perm / 222 o -perm / a + w) pero no son ejecutables para cualquiera (! -perm / 111 y! -perm / a + x respectivamente) Importante: Utilizar el hombre comando % hombre ) para ver cómo se usa un comando en su computadora en particular.Los operadores
Ejemplos




