다음 형식의 디렉토리 및 파일 이름 목록이 많이 있습니다.
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
디렉토리 목록은 거대한 아카이브(200GB 이상)이므로 이 접근 방식은 시간이 좀 걸립니다.