tree
には -d
オプション "List directories only.
" 。しかし、「ファイルのみを一覧表示する」オプションが見つからないようです。manページを調べましたが、ファイルのみを一覧表示するオプションが見つからないようです。
他のコメントで述べたように、非ディレクトリのみをリストすることは、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
に追加すると、指定したパターンが反転され、 '/'で終わるすべての行に一致します。
ディレクトリが実際に表示されていないにもかかわらず、最後の要約でも適用できることに気づくでしょう。
1つ以上のレベルを下げると、ツリー構造が支配的になり、状況は少し奇妙になります。
$ 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
これにより、実際にノードのないツリー構造も読みやすくなると思います。
次のコマンドを検討してください。
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 '/$'"