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

如何使用tree命令精准排除指定子目录(test/raw与test/b/data)

精准排除指定目录的tree命令用法

先执行以下命令创建测试目录结构:

me@s:/tmp$ mkdir -p test/raw test/{a,b,c}/data/x
me@s:/tmp$ tree test/
test/
├── a
│   └── data
│       └── x
├── b
│   └── data
│       └── x
├── c
│   └── data
│       └── x
└── raw

需求是排除test/raw和test/b/data目录,但tree的-I选项默认仅匹配目录/文件的名称,直接使用tree test -I 'raw|b/data'无法达到预期效果——因为b/data是路径而非单一目录名,执行后test/b/data依然会被显示:

me@s:/tmp$ tree test -I 'raw|b/data'
test
├── a
│   └── data
│       └── x
├── b
│   └── data
│       └── x
└── c
    └── data
        └── x

如果改用raw|data作为匹配规则,又会错误排除所有data目录:

me@s:/tmp$ tree test -I 'raw|data'
test
├── a
├── b
└── c

me@s:/tmp$

解决方法

方法一:结合find与tree的--fromfile选项

利用find的路径筛选能力先过滤掉目标目录,再将结果传给tree显示:

find test -path "test/raw" -prune -o -path "test/b/data" -prune -o -print | tree --fromfile

执行后会得到预期的目录结构:

test
├── a
│   └── data
│       └── x
├── b
└── c
    └── data
        └── x

方法二:使用tree的--matchdirs选项(需新版本tree支持)

该选项会让-I的匹配规则作用于完整路径而非仅节点名称,直接执行以下命令即可:

tree test --matchdirs -I 'raw|b/data'

内容的提问来源于stack exchange,提问作者user3313834

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 20:03:29