find 命令用法速查表

linux find 命令总是用了忘,再查,再用,再忘。总算无法忍受这种无聊游戏了,遂有此篇。

搜索文件

根据文件名搜索

搜索指定名称的文件,大小写敏感:find <path> -name <文件名>
搜索指定名称的文件,忽略大小写:find <path> -iname <文件名>

文件名中可以使用通配字符(wildcard character):

  • []:匹配方括号中字符范围内的任何一个字符
  • *:匹配零个或多个任意字符
  • ?:匹配零个或一个任意字符

根据文件类型搜索

用法:find <path> -type <文件类型>

-type 表示根据文件类型搜索。文件类型主要有:

- f:常规文件
- d:目录
- l:软链接,即符号链接
- s:socket 文档
- p:具名的 pipe(FIFO)
- b:块设备文件
- c:字符设备文件

根据时间属性搜索

用法:find <path> <时间选项> <n>
其中 <时间选项> <n> 就是用来筛选文件的 boolean 表达式。把时间单位记作 U,n 就是时间单位的个数。find 程序的启动时间记作 s,文件的某种时间属性记作 x,那么这个表达式条件的伪代码就是 rounded_up_to_the_next_full_time_unit(x - s) <compare_operator> n

时间选项:

  • -atime n:n 为数字,查找在 n 天前的那一天内被 access 过的文件
  • -mtime n:n 为数字,查找在 n 天前的那一天内被 modify 过的文件
  • -ctime n:n 为数字,查找在 n 天前的那一天内被 change 过状态的文件
  • -amin n:n 为数字,查找在 n 分钟前的那一分钟内被 access 过的文件
  • -mmin n:n 为数字,查找在 n 分钟前的那一分钟内被 modify 过的文件
  • -cmin n:n 为数字,查找在 n 分钟前的那一分钟内被 change 过状态的文件

再来解释哈那两个看起来晦涩难懂的时间限定:

  • -mtime 7:查找 7 天前被 modify 过的文件。如果今天是 9/17,那么 7 天前的那一天就是 9/11
  • -mtime -7:查找 7 天内被 modify 过的文件。如果今天是 9/17,那么 7 天之內就是 9/11 到 9/17
  • -mtime +7:查找 modify 的时间是在 7 天以上的文件。如果今天是 9/17,那么 modify 时间在 7 天以上的文件就是 9/11 以前修改过的文件
  • -mtime +7 -mtime -14:查找 modify 时间是在 7 天以上、14 天以下的文件
  • -mmin -60:查找最近一小时内被修改过的文件
  • -cmin -60:查找最近一小时内被修改过状态的文件
  • -amin -60:查找最近一小时内被存取过的文件

所有时间选项指定时间的方式都相同。

0%