find 是 Unix 文件检索的瑞士军刀,也是大家最常 Google 的工具。size 参数是 +100M 还是 +100MB?-mtime -7 是最近七天还是七天以上?你可以把半页 man 装进脑子,也可以干脆不再尝试。
一个场景
周五下午,构建机的磁盘快满了,你得弄清楚是谁在吃。不需要全量盘点——只要写出脑海里那四五个查询就行,前提是你还记得参数。
大于 100 MB 的文件
clai
$ clai 找出当前目录下大于 100MB 的文件→ find . -type f -size +100M -printf '%s\t%p\n' | sort -rn | head -20./build/output.bin 142876160./logs/2026-04.json 113246208./assets/raw.tar 104857600
大小加时间
clai
$ clai 过去一周修改的、大于 50MB 的文件→ find . -type f -size +50M -mtime -7 -printf '%TY-%Tm-%Td %s %p\n'2026-04-26 142876160 ./build/output.bin2026-04-23 73400320 ./cache/db.dump
按扩展名过滤
clai
$ clai 找出大于 10MB 的 .log 文件→ find . -type f -name '*.log' -size +10M./var/log/app.log./var/log/nginx/access.log
最大 10 个目录
clai
$ clai 列出当前目录下最大的 10 个子目录→ du -hx --max-depth=2 . 2>/dev/null | sort -hr | head -102.4G ./node_modules1.1G ./.cache640M ./logs
第一次答非所问
如果 clai 给你 du -h | sort -h | tail,但你想要前 10,按 R 加上语境——「前 10,倒序,人类可读」。改写循环就是为这个场景设计的;完整模式见改写那篇。
什么没被替代
-exec 链式调用和较冷门的谓词(-newer、-prune)如果你天天用,记忆成本是值得的。但 90% 的场景——目录 Y 下、大小 X、匹配 Z 的文件——用一句话描述比回忆语法更快。
清完大文件后,清理旧日志和备份是下一步。