1.概述
find命令:查找文件或者目录的命令。
2.基础使用
find [文件夹路径(查找范围,越精细越好,否则性能消耗)] [选项参数]
参数:
-type
:根据文件类型f
:文件d
:文件夹
-name
:根据文件名-perm
:根据文件权限-user
:根据文件所属用户-mtime
:根据修改时间来查找-n
:表示更改时间距离现在n天以内+n
:表示更改时间距离现在n天以前
# 查找/var/log目录下 所有以 .log结尾的 文件
find /var/log -type f -name "*.log"
# 查找/var/log目录下 所有的文件夹
find /var/log -type d
# 查找/var/log目录下 权限为600 的 所有以 .log结尾的 文件
find /var/log -perm 600 -type f -name "*.log"
# 查找/var/log目录下 XD用户的 所有文件
find /var/log -user XD
# 查找/var/log目录下 2天内 修改的 所有以 .log结尾的 文件
find /var/log -mtime -2 -name "*.log"
# 查找/var/log目录下 2天前 修改的 所有以 .log结尾的 文件
find /var/log -mtime +2 -name "*.log"
3.高级使用
查找出结果后,再全部进行处理。[查询] -exec [其他命令+{}参数接收] \;
# 查找出结果,然后统计出每个文件内行数
find /var/log -type f -name "*.log" -exec wc -l {} \;
# ; #可以执行多条命令
# \ #转义符,转义;使得这条命令结束
# {} #把find命令匹配到的每一次结果传递给{}
# -exec #执行
# 以上过程,可以理解为函数调用
# 查找出结果,并拷贝到其他目录下去
find /var/log -type f -name "*.log" -exec cp -a {} /home/test \;
# 根据文件的变更时间来查找;-n表示更改时间距离现在n天以内;+n表示更改时间距离现在n天以前
find /var/log -mtime -2 -name "*.log" -exec ls -lrt {} \;
find /var/log -mtime +2 -name "*.log" -exec ls -lrt {} \;