树形显示子目录中的hw、hw.cpp & hw.cpp2

树形显示子目录中的hw、hw.cpp & hw.cpp2

我想tree显示子目录中的硬件文件,如下所示:

.
├── exp
│   └── hw
├── src
│   └── hw.cpp2
└── tmp
    └── hw.cpp

$ /usr/bin/tree --noreport .显示所有文件:

.
├── exp
│   ├── hi
│   └── hw
├── src
│   ├── hi.cpp2
│   └── hw.cpp2
├── ssbuild.bash
├── sslogin.bash
└── tmp
    ├── hi.cpp
    └── hw.cpp

/usr/bin/tree --noreport -P *hw .不带hw扩展名:

.
├── exp
│   └── hw
├── src
└── tmp

/usr/bin/tree --noreport -P hw* .产生:

.
├── exp
├── src
└── tmp

版本信息/usr/bin/tree --version

tree v2.1.0 © 1996 - 2022 by Steve Baker, Thomas Moore, Francesc Rocher, Florian Sesser, Kyosuke Tokoro

答案1

tree实用程序有一个特定的选项 ,-P用于指定文件名必须匹配才能成为输出一部分的模式。使用的模式类型-P是 shell 文件名通配模式,因此需要用引号引起来,以避免 shell 在命令行上扩展它。

tree -P 'hw*' .

由于您当前的目录不包含任何名称匹配*hw(并且由于您使用的 shell 不会抱怨不匹配的通配模式,就像zsh默认情况下所做的那样,并且就像对其shell 选项集bash所做的那样),因此该模式是failglob当您尝试使用它时并没有扩展。但是,该模式仅匹配以下名称结尾在字符串中hw。然而,我无法解释为什么hw*在命令行上使用时会得到该输出。

例子:

$ tree .
.
├── exp
│   ├── hi
│   └── hw
├── src
│   ├── hi.cpp2
│   └── hw.cpp2
├── ssbuild.bash
├── sslogin.bash
└── tmp
    ├── hi.cpp
    └── hw.cpp

3 directories, 8 files
$ tree -P 'hw*' .
.
├── exp
│   └── hw
├── src
│   └── hw.cpp2
└── tmp
    └── hw.cpp

3 directories, 3 files

相关内容