我们如何为“tree”命令指定多个忽略模式?

我们如何为“tree”命令指定多个忽略模式?

我需要打印我们的生产系统的目录结构,并且我想从系统中删除一些特定的目录

我们如何为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'

相关内容