ファイルリストから「ツリー」出力を作成する

ファイルリストから「ツリー」出力を作成する

次の形式のディレクトリとファイル名のリストがたくさんあります。

drwxr-sr-x hamiltont/hamiltont 0 2015-03-11 23:54 Archive/Directory One/Subdir/
-rw-r--r-- hamiltont/hamiltont 21799 2014-01-10 12:52 Archive/Directory One/Subdir/file2.txt
-rw-r--r-- hamiltont/hamiltont 21799 2014-01-10 12:52 Archive/Directory One/Subdir/file3.txt
-rw-r--r-- hamiltont/hamiltont 21799 2014-01-10 12:52 Archive/Directory One/Subdir Two/somefile.txt
-rw-r--r-- hamiltont/hamiltont 21799 2014-01-10 12:52 Archive/Directory Two/Subdir Something/somefile.txt
-rw-r--r-- hamiltont/hamiltont 21799 2014-01-10 12:52 Archive/Directory Other/Subdir/somefile.txt

標準出力を作りたいですtree。特にディレクトリのみが表示され、最大レベル3までしか表示されませんtree -L 3 -d。たとえば、次のようになります。

├── Directory\ One
│   ├── Subdir
├── Directory\ Two
│   ├── Subdir
│   ├── Subdir\ Something
│   └── Subdir\ Two
├── Directory\ Other
│   └── Subdir

かなり複雑なbashスクリプトを使用してこれを実行できますが、より簡単な方法があると思います。

ベストアンサー1

当時は使用できませんが、Version 1.8.02018年11月16日現在、次のオプションがtreeあります--fromfile「ファイルシステムではなくファイルからディレクトリのリストを読みます。」
したがって、例の形式を正しく指定すると、infile次のようになります。

Archive/Directory One/Subdir/
Archive/Directory One/Subdir/file2.txt
Archive/Directory One/Subdir/file3.txt
Archive/Directory One/Subdir Two/somefile.txt
Archive/Directory Two/Subdir Something/somefile.txt
Archive/Directory Other/Subdir/somefile.txt

だからあなたは実行することができます

tree --fromfile infile
infile
└── Archive
    ├── Directory One
    │   ├── Subdir
    │   │   ├── file2.txt
    │   │   └── file3.txt
    │   └── Subdir Two
    │       └── somefile.txt
    ├── Directory Other
    │   └── Subdir
    │       └── somefile.txt
    └── Directory Two
        └── Subdir Something
            └── somefile.txt

8 directories, 5 files

ディレクトリのみを表示し、レベル3までのみ表示します。

tree -L 3 -d --fromfile ファイルの入力
infile
└── Archive
    ├── Directory One
    │   ├── Subdir
    │   └── Subdir Two
    ├── Directory Other
    │   └── Subdir
    └── Directory Two
        └── Subdir Something

8 directories

おすすめ記事