Comando de búsqueda detallada

Buscar instrucciones explicación detallada
20130116 Chenxin acabado
201809 actualización
Ejemplos comunes

Ver el nombre del archivo
buscar de acuerdo con el contenido del archivo . -Tipo f -exec grep -l 'xyz' {};
encontrar. -Tipo fxargs grep -l 'xyz'

buscar tamaño de archivo estadístico
encontrar ./* -name "* .rdb.gz" -exec ls -l {}; | awk 'BEGIN {SUM7 = 0} {SUM7 + = $ 5} END {print SUM7}'

find ignora los archivos del formato especificado
find -type f! -name " .h" -exec rm -rf {};
find ./ -type f! -name "
.h" -exec rm -rf {}; #Borrar excepto. Todos los demás archivos excepto el sufijo h

find ignora directorios individuales
Si desea ignorar un determinado directorio al buscar archivos, porque sabe que no hay ningún archivo que desee encontrar en ese directorio, puede usar la opción -prune para indicar el directorio que se ignorará. Tenga cuidado al usar la opción -prune, porque si también usa la opción -depth, la opción -prune será ignorada por el comando find. Si desea buscar archivos en el directorio / apps, pero no desea buscar en el directorio / apps / bin, puede usar:
$ find / apps -path "/ apps / bin" -prune -o -print (ignore un directorio)

find busca archivos
con un tamaño o tiempo especificado o por tamaño:
find / -size 1500c (buscar archivos de 1,500 bytes, c significa bytes)
find / -size + 1500c (buscar archivos de más de 1,500 bytes, + significa más de )
Buscar / -size -1500c (buscar archivos de menos de 1,500 bytes, -significa menos de)
por tiempo:
find / -amin n last n minutes
find / -atime n last n days
find / -cmin n last n minutes change state
find / -ctime n Cambiar el estado en los últimos n días
Ver los datos antes de 7 días:
/ usr / bin / find / bak / -mtime +7 -name " .gz" -exec ls -al {};
Ver los datos del último día :
/ Usr / bin / find / bak / -mtime -1 -name "
.gz" -exec ls -al {};

find informó que "la ruta debe estar antes de la expresión". Para
más de una coincidencia, dekstop genera varias palabras, y solo la primera se usará como parámetro de la opción -name. El resto del hallazgo no se reconoció, por lo que el error "La ruta debe estar antes de la expresión". Por lo tanto, si desea utilizar una expresión regular en -name, debe escapar de ella para evitar que el shell la expanda primero. La forma de escapar es ' .desktop' o "* escritorio", por lo que la opción -name siempre solo acepta este parámetro.
find ./ -name " .txt" -exec ls -al {};
regex de coincidencia regular
encuentra encontrar varios archivos al mismo tiempo -regex, y la operación correspondiente (lote mv o ls)
sufijará .log y .out mv
Busque ./ -maxdepth 1 -type f -regex '.
( .Log | .out)' -exec mv "{}" "restart-log / {} - date +%Y-%m%d-%H%M%S" en la carpeta restart-log ;

El siguiente ejemplo presta atención al uso del parámetro -o, que incluye -mtime antes y después. Si se incluye -exec, se requiere antes y después de -o. De lo contrario, solo coincide con la opción -o con -exec agregado.
Find / data / Server_backup -regex '. (list.tmp | .gz)' -mtime +10
find / data / Server_backup -name "
list.tmp" -mtime +10 -o -name "* .gz" -mtime +10

Busque archivos que contengan htm y al menos un carácter detrás; y nombres de archivo que contengan caracteres iss y puedan contener varios caracteres u 0.
Busque ./ -regex '. (Htm. | Issu ). *' De la siguiente manera
. /issue.net
./issue
./index.html

Modo de ejecución 1 Descripción de
ejecución El proceso de ejecución del comando, primero encuentra el archivo, luego pasa el archivo a las llaves "{}", y luego ejecuta el comando rm. {} Representa el archivo (probablemente el nombre del archivo).
-Exec debe terminar con un ;, y porque el shell generalmente procesa el ;, uso; para evitar esto. {} Es posible que deba escribirse como '{}', también para evitar que el shell lo filtre.
Nota: {} debe ir seguido de ";" y debe haber un espacio entre "{}" y ";"
find ./ -name " .tar.gz" -exec ls -al {}; | grep "volcado "


Cambie el nombre del lote, busque ./ -maxdepth 1 -type f -name " .out" -exec mv "{}" "tmp / {} - date +%Y-%m%d-%H%M%S" en el
directorio actual ; encuentre ./ -maxdepth 1 -type f -name " . log "-exec mv" {} "" tmp / {} - date +%Y-%m%d-%H%M%S"; dos en
uno (regular)
encontrar ./ ​​-maxdepth 1 -type f -regex '. (.log | .out)' -exec mv" { } "" restart-log / {} - date +%Y-%m%d-%H%M%S"; combina dos
en uno (usa el parámetro -o)
find ./ -maxdepth 1 -type f -name"
.out "-exec mv" {} "" restart-log / { } - date +%Y-%m%d-%H%M%S"; -o -name" * .log "-exec mv" {} "" restart-log / {} - date +%Y-%m%d-%H%M%S";

Encuentre coincidencias y cópielas en lotes:
encuentre ./ -name " .sql.tar.gz" -mtime +30 -exec cp -aprf "{}" / data / old_data_2013;
copie de forma remota los archivos coincidentes en la máquina remota:
encuentre. / -name "Network_Test_20120
.txt" -exec scp -P 4399 "{}" [email protected]: / home / admin /;

Descripción del método de ejecución 2 xargs
Consulte http://czmmiao.iteye.com/blog/1949225
Introducción La
razón por la que se puede usar este comando es que muchos comandos no admiten la canalización "|" para pasar parámetros, y esto se incluye en el trabajo diario. Necesario, entonces existe el comando xargs. Por ejemplo:
este comando es incorrecto find / sbin -perm +700 | ls -l
Este es el find / sbin -perm +700 | xargs ls -l correcto

Cuando se usa la opción -exec del comando find para procesar los archivos coincidentes, el comando find pasa todos los archivos coincidentes a exec para su ejecución. Sin embargo, algunos sistemas tienen restricciones en la longitud de los comandos que se pueden pasar a exec, por lo que el comando find se ejecuta durante unos minutos. Después de eso, se producirá un error de desbordamiento. El mensaje de error suele ser "columna de parámetro demasiado larga" o "desbordamiento de columna de parámetro".

El comando xargs solo obtiene una parte del archivo en lugar de todo a la vez, a diferencia de la opción -exec. En algunos sistemas, para evitar la desventaja de -exec, los parámetros se dividen en múltiples procesos para su ejecución. Con el comando xargs, solo hay un proceso.

find ./ -maxdepth 1 -type f -regex '. * (. log | .out)' | xargs -i mv {} {} date +%Y%m%d-%H%M%S
-i o -I, depende del soporte de linux, cada elemento de xargs El nombre generalmente se asigna a {} línea por línea, que se puede reemplazar con {}.
$ ls
1.txt 2.txt 3.txt log.xml
$ ls * .txt | xargs -t -i mv {} {} .bak
mv 1.txt 1.txt.bak
mv 2.txt 2.txt.bak
mv 3.txt 3.txt.bak
$ ls
1.txt.bak 2.txt.bak 3.txt.bak log.xml
Tenga en cuenta que -Debo especificar el carácter de reemplazo, si se debe especificar el carácter de reemplazo opcional

Otros parámetros comunes
de find 1. La forma general del comando
find find pathname -options [-print -exec -ok ...]

2. La
ruta de acceso del parámetro de comando encontrar nombre de ruta.
-Imprimir el archivo coincidente a la salida estándar.
-Ejecutar Ejecutar el comando de shell dado por el parámetro al archivo coincidente. El comando correspondiente tiene la forma de 'comando' {} ;, Preste atención al espacio entre {} y ;.
-Ok y -exec tienen el mismo efecto, pero ejecute los comandos de una manera más segura. Indique antes de ejecutar cada comando y permita que el usuario determine si ejecutar.

3. La opción de comando find
-name busca archivos de acuerdo con el nombre del archivo. Seguido de "nombre de archivo".
$ Find. -Name "[AZ] " -print
$ find / etc -name "host
" -print
$ find ~ -name " " -print O busque. -Imprima
$ find / -name "
" -print
$ find. -Name "[az] [az] [0--9] [0--9] .txt" -print

-perm Buscar archivos según los permisos de archivo.
$ find. -perm 755 -print

-prune Cómo evitar un directorio de archivos al usar buscar para buscar archivos.

-user busca archivos por propietario del archivo.
-nouser busca archivos sin un propietario válido, es decir, el propietario del archivo no existe en / etc / passwd.
-group busca archivos por el grupo al que pertenece el archivo.
-nogroup no encuentra ninguno El archivo al que pertenece el grupo es válido, es decir, el grupo al que pertenece el archivo no existe en / etc / groups

-newer file1! file2 Buscar archivos cuyo tiempo de cambio es más nuevo que el archivo1 pero más
antiguo que el archivo 2. Si desea encontrar todos los archivos cuyo tiempo de cambio es más nuevo que un determinado archivo pero más antiguo que otro archivo, puede usar la opción -newer. Su forma general Para: nombre_archivo_nuevo! Nombre_archivo_destino
donde ,! Es un símbolo lógico no.

encontrar -newer httpd1.conf! -nuevo temp -ls

Encuentre el archivo cuyo tiempo de cambio es más nuevo que el archivo temporal:
$ find.

-tipo Encuentra un cierto tipo de archivo, como: archivo de dispositivo b-block, directorio d, archivo de dispositivo c-character, archivo p-pipeline, l-archivo de enlace simbólico, f-archivo ordinario.

-size n: [c] Encuentra un archivo con una longitud de n bloques. Con c, la longitud del archivo está en bytes.
Encuentra archivos con una longitud de archivo mayor que 1 M bytes en el directorio actual:
find. -size + 1000000c
find .size + 1k
find .size + 1M
Encuentra archivos con una longitud de archivo de exactamente 100 bytes en el directorio / home / apache:
find / home / apache -size 100c -print
Encuentra archivos de más de 10 bloques en el directorio actual (Un bloque es igual a 512 bytes):
buscar. -Tamaño +10 -impresión

-maxdepth 2 La profundidad del directorio de búsqueda es el nivel 2.

-fstype Buscar archivos ubicados en un determinado tipo de sistema de archivos. Estos tipos de sistemas de archivos se pueden encontrar en / etc / fstab. Este archivo contiene información sobre el sistema de archivos en este sistema.

-follow Si el comando find encuentra un archivo de enlace simbólico, rastrea el archivo señalado por el enlace.

-cpio uso de archivos coincidentes cpio comando para una copia de seguridad de estos archivos en dispositivos de cinta.
combinación de hallazgo y cpio comando
cd / ruta / a / Fuente / dir
hallazgo. | cpio -pdumv / ruta a / ¿Dónde quieres dir / /
cpio comando Es un comando de copia, está diseñado para copiar archivos hacia o desde un archivo cpio o tar, y mantiene automáticamente los permisos, el tiempo y la propiedad de los archivos y subdirectorios.

-mtime -n + n para buscar el archivo de acuerdo con la hora de modificación del archivo,
-n significa que el tiempo de cambio de archivo está dentro de n días desde el presente,
+ n significa que el tiempo de cambio de archivo es n días antes del presente.

El comando find también tiene las opciones -atime (tiempo de acceso) y -ctime (tiempo de creación), pero son similares a la opción -m time.

-amin n buscar archivos accedidos en los últimos N minutos en el
sistema -ahora n buscar archivos accedidos en las últimas n 24 horas en el
sistema -cmin n buscar archivos en el sistema cuyo estado de archivo se modificó en los últimos N minutos
-ctime n encontrar las últimas n
24 horas en el sistema El archivo
cuyo estado de archivo ha cambiado -mmin n Encuentra el archivo cuyos datos de archivo se cambiaron en los últimos N minutos en el
sistema -mtime n Encuentra el archivo cuyos datos de archivo se cambiaron en las últimas n * 24 horas en el sistema

Si desea encontrar el archivo de acuerdo con el tiempo cambiado, puede usar la opción mtime, atime o ctime.
Si el sistema de repente no tiene espacio libre, es probable que la longitud de un determinado archivo crezca rápidamente durante este período, entonces puede usar la opción mtime para encontrarlo de esta manera. Archivos.
Use el signo menos para limitar los archivos cuyo tiempo de cambio es dentro de n días, y use el signo más + para limitar los archivos cuyo tiempo de cambio es anterior a n días.
Espero encontrar el tiempo de cambio en el directorio raíz del sistema el 5 Dentro del archivo, puede usar:
$ find / -mtime -5 -print
Para encontrar el archivo con el tiempo de cambio antes de 3 días en el directorio / var / adm, puede usar:
$ find / var / adm -mtime +3 -print

Supongo que te gusta

Origin www.cnblogs.com/chanix/p/12737834.html
Recomendado
Clasificación