find命令

发布时间 2023-03-25 20:12:27作者: 小刘的早餐店

作用

find顾名思义就是查找文件,当然也可以查找目录

基本语法

find 路径 -命令参数 [输出形式]
路径就是从哪个地方开始搜索,不写默认为当前目录
输出形式有-print,-printf,-print0,-exec,-ok,-ls

输出形式

  • exec 命令名称 {} 对符合条件的文件执行所给的Linux 命令,而不询问用户是否需要执行该命令。
    {}表示命令的参数即为所找到的文件;命令的末尾必须以“ \;”结束。
  • ok 命令名称 {} 对符合条件的文件执行所给的Linux 命令,与exec不同的是,
    它会询问用户是否需要执行该命令。
  • ls 详细列出所找到的所有文件。
  • fprintf 文件名 将找到的文件名写入指定文件。
  • print 在标准输出设备上显示查找出的文件名(默认)。
  • printf 格式 格式的写法请参考有关C语言的书。

参数

  • name 按照文件名称查找文件
    find . -name test.txt // 搜索当前目录下test.txt
    find . -name *.txt //搜索当前目录下txt格式的文件
  • perm 按照文件的权限查找文件
    find . -perm 644 //搜索当前目录下权限644的文件
  • prune 不在指定目录中查找
    find . -path ./a -prune -o -name "*.txt 当前目录除a目录外查找以txt结尾的文件 -o是or的意思
  • user 按照文件属主来查找文件
    find . -user root //查找root的文件
  • group 按照文件所属的组来查找
    find . -group root
  • mtime -n +n 根据文件内容修改时间查找 +n是n天前 -n是n天之内
  • mmin -n +n 同上n的单位是分钟
  • atime -n +n 根据文件访问时间查找 +n是n天前 -n是n天之内
  • amin -n +n 同上n的单位是分钟
  • ctime -n +n 根据文件状态修改时间查找 +n是n天前 -n是n天之内
  • cmin -n +n 同上n的单位是分钟
  • type 查找某一类型的文件
    b 块设备文件
    d 目录
    c 字符设备文件
    p 管道文件
    l 符号连接文件
    f 普通文件
    s socket文件
  • size 文件大小 单位有b(默认) c k w M G
    find . -size +10M //查找文件大于10M的文件
  • o or的意思
  • a and的意思
    find . -name *.txt and -size +10M //查找名称已txt结尾,且文件大于10M
  • not !非的意思
    find . ! -name *.txt //查找非txt文件
  • empty 空文件或空目录
    find . -type d -empty //查找所有的空目录

其他案例

find . -name "*" -type f -mtime +7 -delete //当前下面7天前所以的文件并删除
find . \( -name "*.sh" -o -name "*.txt" \) -print // sh或txt格式的文件, "" 转义后面的括号
find . -name '.git' -exec rm -rf {} \;// 删除文件夹下面的所有的.git文件 {}代表前面查找的所有文件, ;是固定语法

注意事项

  • 多个表达式时最好使用括号,括号需要转义,方便阅读并且可控制优先级
  • 有不了解的命令可以访问cheat在线查看