You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Terminal中递归搜索并仅列出非文件夹文件(排除目录本身)

如何在Terminal中递归搜索并仅列出非文件夹文件(排除目录本身)

哈哈,太懂你想确认大目录结构里到底有没有实际文件的需求了!我之前也折腾了好一阵find和grep的命令,踩了不少坑,终于摸出了精准解决的办法,来分享给你~

最直接的解决方案:用find原生参数筛选

其实find本身就支持直接筛选文件类型,完全不用绕弯子。要递归找出所有非文件夹的普通文件,同时排除.DS_Store这类系统自动生成的文件,直接用这条命令就行:

find "$PWD" -type f ! -name ".DS_Store"
  • -type f:指定只找普通文件,自动排除所有目录、符号链接、设备文件等非文件类型的条目
  • ! -name ".DS_Store":反向匹配,排除掉所有名为.DS_Store的文件
  • "$PWD":基于当前工作目录开始递归搜索,也可以换成你要检查的具体目录路径,比如/Users/xxx/your-large-folder

如果想直接看到文件的详细信息(比如大小、修改时间),可以配合ls命令:

find "$PWD" -type f ! -name ".DS_Store" -exec ls -laht {} +

-exec ls -laht {} +会把找到的文件批量传给ls,按修改时间倒序显示,方便你快速判断有没有有价值的内容。

聊聊我之前踩过的坑

我之前也像你一样,一开始绕了很多弯路:

  • 用prune配合xargs的方式,越写越复杂,最后输出还是混进了目录路径
  • 用grep -v DS的时候踩了大雷——直接把所有文件名里带"DS"的文件都排除了,完全偏离了只排除.DS_Store的需求
  • 反复试各种-name/-iname的写法,结果都是白忙活,因为没抓住-type f这个核心参数

其实只要记住find的-type参数,就能精准区分文件和目录,根本不用额外的过滤操作。

备注:内容来源于stack exchange,提问作者Jordan Elpern-Waxman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 10:12:33