1.概述

find命令:查找文件或者目录的命令。

2.基础使用

  1. find [文件夹路径(查找范围,越精细越好,否则性能消耗)] [选项参数]

参数:

  • -type :根据文件类型
    • f :文件
    • d :文件夹
  • -name :根据文件名
  • -perm :根据文件权限
  • -user :根据文件所属用户
  • -mtime :根据修改时间来查找
    • -n :表示更改时间距离现在n天以内
    • +n :表示更改时间距离现在n天以前
  1. # 查找/var/log目录下 所有以 .log结尾的 文件
  2. find /var/log -type f -name "*.log"
  3. # 查找/var/log目录下 所有的文件夹
  4. find /var/log -type d
  5. # 查找/var/log目录下 权限为600 的 所有以 .log结尾的 文件
  6. find /var/log -perm 600 -type f -name "*.log"
  7. # 查找/var/log目录下 XD用户的 所有文件
  8. find /var/log -user XD
  9. # 查找/var/log目录下 2天内 修改的 所有以 .log结尾的 文件
  10. find /var/log -mtime -2 -name "*.log"
  11. # 查找/var/log目录下 2天前 修改的 所有以 .log结尾的 文件
  12. find /var/log -mtime +2 -name "*.log"

3.高级使用

查找出结果后,再全部进行处理。
[查询] -exec [其他命令+{}参数接收] \;

  1. # 查找出结果,然后统计出每个文件内行数
  2. find /var/log -type f -name "*.log" -exec wc -l {} \;
  3. # ; #可以执行多条命令
  4. # \ #转义符,转义;使得这条命令结束
  5. # {} #把find命令匹配到的每一次结果传递给{}
  6. # -exec #执行
  7. # 以上过程,可以理解为函数调用
  8. # 查找出结果,并拷贝到其他目录下去
  9. find /var/log -type f -name "*.log" -exec cp -a {} /home/test \;
  10. # 根据文件的变更时间来查找;-n表示更改时间距离现在n天以内;+n表示更改时间距离现在n天以前
  11. find /var/log -mtime -2 -name "*.log" -exec ls -lrt {} \;
  12. find /var/log -mtime +2 -name "*.log" -exec ls -lrt {} \;