tree
하나 있다-d
옵션은 " List directories only.
" 입니다.. 그러나 "파일만 나열" 옵션을 찾을 수 없는 것 같습니다. 매뉴얼 페이지를 살펴봤지만 파일 목록만 나열하는 옵션을 찾을 수 없는 것 같습니다.
답변1
다른 사람들이 의견에서 말했듯이 디렉토리가 아닌 목록을 나열하는 것만으로는 명령의 목적에 정확히 부합하지 않습니다 tree
.
그러나 파일만 나열됩니다.현재 디렉터리에당신이 나와 같고 사용자 정의를 사용하는 것을 선호한다면 tree
( ls
아마도 당신이 선호하는 플래그와 매개변수 별칭을 ls
사용할 수도 tree
있습니다), 이것은 드문 일이 아닙니다.
tree
와 의 조합을 사용하면 grep
원하는 것을 얻을 수 있습니다.
$ tree -F
.
├── file1.txt
├── file5.txt
├── parent_dir1/
│ ├── child_dir/
│ ├── file2.txt
│ └── file3.txt
└── parent_dir2/
└── child_dir2/
└── file4.txt
4 directories, 4 files
$ tree -FL 1 | grep -v /$
.
├── file1.txt
├── file5.txt
2 directories, 1 file
"F" 플래그를 사용하면 tree
"/"가 디렉터리에 추가되는 반면 "v" 플래그는 grep
"/"로 끝나는 모든 줄과 일치하는 지정된 패턴을 반전시킵니다.
목차가 실제로 표시되지는 않지만 끝에 있는 요약도 여전히 적용된다는 것을 알 수 있습니다.
한 레벨 이상 아래로 내려가면 트리 구조가 이어지며 상황이 조금 이상해집니다.
$ tree -FL 3 | grep -v /$
.
├── file1.txt
├── file5.txt
│ ├── file2.txt
│ └── file3.txt
└── file4.txt
4 directories, 4 files
편집하다
또한 이 손상된 트리 출력이 문제가 되는 경우(예: 일부 파일이 "└─" 문자 대신 "├─" 문자로 시작하고 다중 레벨 버전이 사라지는 것처럼 보이는 경우...) 먼저 이 문제를 해결할 수 있습니다. 출력 디렉토리를 정렬합니다.
$ tree --dirsfirst -FL 1 | grep -v /$
.
├── file1.txt
└── file5.txt
2 directories, 1 file
$ tree --dirsfirst -FL 3 | grep -v /$
.
│ ├── file2.txt
│ └── file3.txt
│ └── file4.txt
├── file1.txt
└── file5.txt
4 directories, 5 files
나는 이것이 실제로 노드 없는 트리 구조를 더 읽기 쉽게 만든다고 생각합니다.
답변2
다음 명령을 고려하십시오.
tree -ifF /usr/java/default/jre/lib/images | grep -v '/$'
/usr/java/default/jre/lib/images
/usr/java/default/jre/lib/images/cursors/cursors.properties
/usr/java/default/jre/lib/images/cursors/invalid32x32.gif
/usr/java/default/jre/lib/images/cursors/motif_CopyDrop32x32.gif
/usr/java/default/jre/lib/images/cursors/motif_CopyNoDrop32x32.gif
/usr/java/default/jre/lib/images/cursors/motif_LinkDrop32x32.gif
/usr/java/default/jre/lib/images/cursors/motif_LinkNoDrop32x32.gif
/usr/java/default/jre/lib/images/cursors/motif_MoveDrop32x32.gif
/usr/java/default/jre/lib/images/cursors/motif_MoveNoDrop32x32.gif
/usr/java/default/jre/lib/images/icons/sun-java_HighContrastInverse.png
/usr/java/default/jre/lib/images/icons/sun-java_HighContrast.png
/usr/java/default/jre/lib/images/icons/sun-java_LowContrast.png
/usr/java/default/jre/lib/images/icons/sun-java.png
2 directories, 12 files
-i
및 인수를 사용하면 들여쓰기 대신 전체 경로가 각 줄에 출력됩니다 -f
. tree
이 매개변수는 디렉토리 이름에 -F
를 추가하게 하며 , 이는 반전된 grep()에 의해 필터링됩니다./
grep -v '/$'
나는 다른 명령을 실행하는 동안 출력 디렉터리(및 해당 하위 디렉터리)의 내용을 조급하게 관찰하는 데 도움이 되도록 이러한 변형을 자주 사용합니다.
watch exec "tree -ifFsD /var/local/myapp/data | grep -v '/$'"
답변3
사용하지 않는다는 답변에 동의하신다면 tree
사용을 권해 드립니다 find
.
find $DIR -type f
$DIR
검색하려는 디렉토리는 어디에 있습니까?
그럼 넌 할 수 있어트리 형태로 아름답게 꾸며보세요당신이 할 의향이 있다면.
이 모든 작업을 수행하는 함수를 만들 수 있습니다 tree_file
. 크레딧은 JavaSherrif로 이동합니다.이 답변(이전에 링크된) sed
것들. 방금 UTF 문자를 포함하도록 조정했습니다.
tree_file() {
DIR=${1:-"."}
find $DIR -type f | sed -e "s/[^-][^\/]*\// │/g" -e "s/│\([^ ]\)/│── \1/"
}
답변4
이전 스레드이지만 -F now(?)는 파일 형식을 표시하기 위해 다른 문자를 추가합니다.
-F는 ls -F에 따라
/' for directories, a
소켓 파일의 경우 =', 게이트(Solaris)의 경우 >' 및 FIFO의 경우 "|"를 추가합니다.*' for executable files, a
명령은 다음과 같습니다.
watch exec "tree -ifFsD /var/local/myapp/data | grep '[[:alnum:]]$\|\*'"