대용량 압축 파일(특히 두 번째 수준 디렉터리)의 트리를 보고 싶어서 다음 명령을 사용했습니다.
tar -tf tarfile | tree -L 2
하지만 압축 파일의 트리가 아닌 내가 있는 디렉터리의 트리가 출력됩니다. 다른 명령은 잘 작동합니다. 예를 들어 이렇게 하면
tar -tf tarfile | less
tar 파일을 올바르게 탐색할 수 있습니다.
tree
제가 뭔가 잘못하고 있는 걸까요? 아니면 다른 명령처럼 파이핑을 통해 사용할 수 없는 걸까요 ? 그렇지 않다면 압축파일의 2차 디렉터리에 있는 파일만 볼 수 있는 다른 방법이 있나요?
답변1
tree
표준 입력의 파일 목록을 인수로 받아들일 수 있습니다 --fromfile
.
파일 시스템이 아닌 파일에서 디렉터리 목록을 읽습니다. 명령줄에 제공된 경로는 검색할 디렉터리가 아니라 읽을 파일입니다. 점(.) 디렉토리는 트리가 표준 입력에서 경로를 읽어야 함을 나타냅니다.
따라서 다음과 같은 것을 시도해 볼 수 있습니다.
tar -tf tarfile | tree --fromfile .
그러나 불행하게도 -L
이 주장은 적어도 내 컴퓨터에서는 표준 입력을 읽을 때 작동하지 않습니다.
답변2
stdin을 읽지 않고 실제 디렉토리 구조(현재 디렉토리 또는 지정된 디렉토리)를 탐색 하므로 tree
tar 파일의 디렉토리를 후처리해야 합니다. tar 파일이 전체/절대 경로 이름으로 생성된 경우 원하는 디렉터리 깊이를 찾기 위해 범위를 조정해야 합니다.
한 가지 옵션은 다음과 같습니다 awk
.
tar -tf tarfile | awk -F/ 'NF == 3'
또 다른 방법은 다음과 같습니다 cut
(레벨 2 이상의 하위 디렉터리로 인해 상위 디렉터리가 다시 보고되지 않도록 고유하게 정렬됨).
tar -tf tarfile | cut -d/ -f1-3 | sort -u