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