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
はシェルファイル名のグロービングパターンであるため、シェルがコマンドラインから拡張するのを防ぐには、引用符で囲む必要があります。
tree -P 'hw*' .
現在のディレクトリには一致する名前が含まれていないため*hw
(使用中のシェルはzsh
デフォルトで、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