Linux 命令行入门教程
32. find(一)名称与类型
本教程共 90 篇 · 第 32 篇
32. find(一)名称与类型
find 是实时在目录树里翻找文件或目录的命令。它不像 locate 那样查现成数据库(见 §34),而是真去硬盘上走一遍,所以刚建的文件也能找到。
基本语法是 find [起点] [条件]。起点省略时默认是当前目录 .。
按名字找,用 -name,区分大小写:
find . -name "notes.txt"
这条会在当前目录及所有子目录里,找名为 notes.txt 的文件或目录。
Warning模式里带
*?[]时,一定要用引号包住。比如find . -name "*.txt",引号不能省。若写成find . -name *.txt,shell 会先把*.txt展开成当前目录的文件名再交给 find,结果就错了。
不区分大小写,用 -iname:
find ~ -iname "*.png"
按类型找,用 -type。f 是普通文件,d 是目录,l 是软链接:
find /var/log -type f
find . -type d -name "build"
两个条件可以叠在一起,既限类型又限名字:
find . -type f -name "*.log"
搜索太深会慢,用 -maxdepth 限制层数:
find . -maxdepth 2 -name "*.txt"
Tipfind 默认会钻进所有子目录。只想看当前这一层,加
-maxdepth 1就够了。
小结:find 从起点实时查找;-name 配引号防展开,-type 区分文件与目录。下章讲按时间、大小和权限找,再用 -exec 批量处理。