次の形式のディレクトリとファイル名のリストがたくさんあります。
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.0
2018年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
答え2
これは私の答えですが、おそらく改善することができます。
# Find all lines with directories
# Remove all ls output before the path is listed
# Recreate the directory tree
grep '^d' archive_filelist.txt | sed 's|.*Archive\(.*\)|\"Archive\1\"|' | xargs mkdir -p
# Use tree as you would normally
tree -L 2 -d Archive
ディレクトリリストは巨大なアーカイブ(200 GB以上)なので、このアプローチには時間がかかります。