我需要打印我们的生产系统的目录结构,并且我想从系统中删除一些特定的目录树?
我们如何为tree
命令指定多个忽略模式?
答案1
您只需向命令提供所有模式-I
,并用 分隔|
。从联机帮助页:
-P pattern
List only those files that match the wild-card pattern. Note:
you must use the -a option to also consider those files begin‐
ning with a dot `.' for matching. Valid wildcard operators are
`*' (any zero or more characters), `?' (any single character),
`[...]' (any single character listed between brackets (optional
- (dash) for character range may be used: ex: [A-Z]), and
`[^...]' (any single character not listed in brackets) and `|'
separates alternate patterns.
-I pattern
Do not list those files that match the wild-card pattern.
所以,例如
tree -I 'test*|docs|bin|lib'
跳过“docs”、“bin”和“lib”目录以及名称中带有“test”的任何目录,无论它们位于目录层次结构中的任何位置。显然,您可以应用通配符来进行更强大的匹配。
答案2
这个答案没有具体回答这个问题,但是进行这样的操作的一个常见原因是忽略 git 忽略的东西。
树已经添加了一个--gitignore
标志版本 2.0.0 (12/21/2021)。
如果您有比这更旧的树版本并且您有ripgrep安装后你可以创建一个像这样的别名来实现类似的效果。
alias itree='rg --files | tree --fromfile'