Linux 文件类型:

  • d:文件夹
  • f:普通文件
  • l:符号链接文件
  • b:块文件
  • c:字符设备
  • p:管道文件
  • s:socket套接字

查找指定文件:find [path…] -type d -name [pattern]

  • -type:指定文件类型
  • -name:指定文件名字
  • -regex:使用正则表达式
  • -user:指定属主
  • -group:指定属组
  • -perm:指定权限 ```bash

    查找指定指定名字的文件夹

    find / -type d -name “usr”

查找当前文件夹中以.avi结尾的普通文件

find . -type f -name “*.avi”

使用正则进行匹配

find . -type f -regex “*”

根据属主和属组进行匹配

find . -type f -user root -group root

根据权限来搜索

find . -perm 664

  1. find 出来的每一个对象执行特定的命令:-exec
  2. ```bash
  3. find . -perm 664 -exec ls -lh {} \;
  • -exec:告知find对其搜索到的每一个对象执行特定的命令
  • ls -lh:待执行的特定的命令
  • {}:占位符,指代find搜索到的每一个对象
  • \;:在 -exec 用法中,分号表示特定的shell命令结束,为了防止转义,必须在分号前面加上反斜杠

按时间来搜索文件:

  • -mmin +/-n:
    • +n:表示在n分钟以前文件被修改过
    • -n:表示在n分钟以内文件被修改过
  • -cmin +/-n:
    • +n:表示在n分钟以前文件状态有过改变
    • -n:表示在n分钟以内文件状态有过改变
  • -amin+/-n:
    • +n:表示在n分钟以前文件被访问过
    • -n:表示文件在n分钟以内文件被访问过

同类选项:

  • -mtime:等效于-mmin,单位为天
  • -ctime:等效于-cmin,单位为天
  • -atime:等效于-amin,单位为天

找到大文件:find . -type f -size +40M

  • -size +40M:搜索大于40M的文件
  • -size -40M:搜索小于40M的文件
  • -size 40M:搜索等于40M的文件

-size支持的单位:

  • b:512byte的数据块
  • c:bytes
  • w:words,两字节的字
  • k:KB
  • M:MB
  • G:GB

指定搜索深度:find . -maxdepth 2 -name xxfile

多条件搜索:find . -type f -a -name “*.mov”

  • 在find中,每一个搜索条件都是一个表达式
  • (expr):提升表达式优先级
  • !expr:对表达式取反
  • expr1 expr2:等效于 expr1 -a expr2,对两个表达式进行 and 关系处理
  • expr1 -o expr2:对两个表达式求或关系,如果 expr1 为真,则不会再评估 expr2
  • expr1 ,expr2:列表表达式,两个表达式都会被评估,但结果总会是 expr2 的结果
    1. # 注意添加转义符,避免被shell处理而无法传递给find命令
    2. find . \( -type f -a -name "*.mov" \) -o \( -type f -a -user root \)