Tree

如何使樹只輸出文件?

  • February 8, 2022

tree可以-d選擇 " List directories only."。但是,我似乎找不到“僅列出文件”的選項。我瀏覽了手冊頁,但似乎找不到僅列出文件的選項。

正如其他人在評論中所說,僅列出非目錄並不完全符合tree命令的目的。

但是,如果您像我一樣喜歡使用自定義的 over (也許您甚至使用您喜歡的標誌和​​參數別名),那麼僅列出目前目錄中的文件並不少見。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

我認為這實際上也使無節點樹結構更具可讀性。

引用自:https://unix.stackexchange.com/questions/232564