Linux系统强大的查找命令find用法

Linux系统下find是最经常使用的指令,find命令在目录结构中搜索文件,并执行指定的操做,掌握它的形式与用法对运维工做颇有用处。mysql

find经常使用参数sql

-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 搜索深刻到目录树的哪一级别

案例分享
今天在编写MySQL数据库备份脚本时,就遇到一个难题,要清理14天前的备份文件。你们可能以为这不是很简单的事情吗,用find找出,而后加xargs rm -rf就能够自动删除了。shell

可事情不是这么简单,下面我来给你们介绍一下需求,我就想找到/home/mysql/backup/physical目下,14天的目录,并删除。数据库

[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

用普通的find参数,试试效果运维

[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

但是我知晓找到下面2个目录,并不须要找到下级目录,很明显,find找的目录多了。ide

[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

怎么办,我用man find看用法时,发现有2个参数-mindepth -maxdepth,能够控制查询的层级,对于解决这个需求,很是的有用,来试试效果code

[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

到这里,已经很是完美的解决了个人需求,在加上xargs rm -rf就能够了orm

[mysql@localhost physical]$ find /home/mysql/backup/physical -mindepth 1 -maxdepth 1 -type d -mtime +14| xargs rm -rfit

这个技能你学到了吧。form

相关文章
相关标签/搜索