Uso de búsqueda de comando de búsqueda potente del sistema Linux

Find es el comando más comúnmente utilizado en Linux. El comando find busca archivos en la estructura del directorio y realiza operaciones específicas. Es muy útil para la operación y el mantenimiento para dominar su forma y uso.

encontrar parámetros comunes

-exec:find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' { } ;,注意{ }和\;之间的空格。
-name filename 查找名为filename的文件
-mtime -n +n 按文件更改时间来查找文件,-n指n天以内,+n指n天以前
-atime -n +n 按文件访问时间来查
-ctime -n +n 按文件创建时间来查找文件,-n指n天以内,+n指n天以前
-type b/d/c/p/l/f 查是块设备、目录、字符设备、管道、符号链接、普通文件
-size n[c] 查长度为n块[或n字节]的文件
-mindepth -maxdepth 选项允许您指定您希望 find 搜索深入到目录树的哪一级别

Case Sharing
Hoy, al escribir un script de copia de seguridad de una base de datos MySQL, encontré un problema difícil: era necesario limpiar los archivos de copia de seguridad hace 14 días. Puede pensar que esto no es un asunto muy simple. Utilice buscar para averiguarlo y luego agregue xargs rm -rf para eliminarlo automáticamente.

Pero las cosas no son tan simples. Déjame presentarte tus requisitos. Quiero encontrar el directorio de 14 días en / home / mysql / backup / physical y eliminarlo.


[mysql@localhost physical]$ pwd
/home/mysql/backup/physical

[mysql@localhost physical]$ ls -l
total 0
drwxr-x--- 3 mysql mysql 31 Mar 23 02:30 202003230230
drwxr-x--- 3 mysql mysql 31 Mar 23 02:33 202003230233

Utilice parámetros de búsqueda ordinarios para probar el efecto


[mysql@localhost physical]$ find /home/mysql/backup/physical -type d -mtime +14
/home/mysql/backup/physical
/home/mysql/backup/physical/202003230230
/home/mysql/backup/physical/202003230230/base_202003230230
/home/mysql/backup/physical/202003230230/base_202003230230/mysql
/home/mysql/backup/physical/202003230230/base_202003230230/sys
/home/mysql/backup/physical/202003230230/base_202003230230/testdb
/home/mysql/backup/physical/202003230230/base_202003230230/performance_schema
/home/mysql/backup/physical/202003230233
/home/mysql/backup/physical/202003230233/base_202003230233
/home/mysql/backup/physical/202003230233/base_202003230233/mysql
/home/mysql/backup/physical/202003230233/base_202003230233/sys
/home/mysql/backup/physical/202003230233/base_202003230233/testdb
/home/mysql/backup/physical/202003230233/base_202003230233/performance_schema

Pero sé que para encontrar los dos directorios siguientes, no es necesario buscar los directorios de nivel inferior. Obviamente, find encuentra más directorios.


[mysql@localhost physical]$ ll
total 0
drwxr-x--- 3 mysql mysql 31 Mar 23 02:30 202003230230
drwxr-x--- 3 mysql mysql 31 Mar 23 02:33 202003230233

¿Qué hacer? Cuando utilizo man find para ver el uso, descubrí que hay 2 parámetros -mindepth -maxdepth, que pueden controlar el nivel de consulta. Es muy útil para resolver este requisito. Probemos el efecto


[mysql@localhost physical]$ find /home/mysql/backup/physical -mindepth 1 -maxdepth 1 -type d -mtime +14
/home/mysql/backup/physical/202003230230
/home/mysql/backup/physical/202003230233

Hasta ahora, mis necesidades se han resuelto perfectamente, solo agregue xargs rm -rf

[mysql @ localhost físico] $ buscar / inicio / mysql / copia de seguridad / físico -mindepth 1 -maxdepth 1 -type d -mtime +14 | xargs rm -rf

¿Has aprendido esta habilidad?

Supongo que te gusta

Origin blog.51cto.com/15061930/2642098
Recomendado
Clasificación