首页 / Linux 命令行入门教程 / 32. find(一)名称与类型

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"

按类型找,用 -typef 是普通文件,d 是目录,l 是软链接:

find /var/log -type f
find . -type d -name "build"

两个条件可以叠在一起,既限类型又限名字:

find . -type f -name "*.log"

搜索太深会慢,用 -maxdepth 限制层数:

find . -maxdepth 2 -name "*.txt"
Tip

find 默认会钻进所有子目录。只想看当前这一层,加 -maxdepth 1 就够了。

小结:find 从起点实时查找;-name 配引号防展开,-type 区分文件与目录。下章讲按时间、大小和权限找,再用 -exec 批量处理。