tgz
다음과 같은 파일 구조의 파일이 있습니다
- folder
- subdir1
- file1.txt
- file2.text
- subdir2
- file1.txt
실행하면 tar -tf folder.tgz
다음이 출력됩니다.
folder/
folder/subdir1/
folder/subdir1/file1.txt
folder/subdir1/file2.txt
folder/subdir2/
folder/subdir2/file1.txt
출력 목록이 다음과 같도록 디렉터리 이름을 제외하려면 어떻게 해야 합니까?
folder/subdir1/file1.txt
folder/subdir1/file2.txt
folder/subdir2/file1.txt
답변1
사용 star
(schily-tools에서):
star tzf file.tgz -find ! -type d
답변2
사용앗. 이 답변은 이를 매우 잘 설명합니다. tar는 파일만 나열합니다.
tar tzf your_archive | awk -F/ '$NF !=""'
tar
이는 경로에 줄 바꿈이 포함된 경우 구현에서 리터럴을 인쇄한다고 가정합니다 . \n
GNU는 이를 tar
수행 bsdtar
하지만 비지박스(busybox) tar
와 다른 것들은 아마도 그렇지 않을 것입니다.
답변3
GNU tar를 사용하고 tar 파일이 그다지 크지 않은 경우 다음을 사용할 수 있습니다.--to-command
옵션각 파일에 대해 명령을 실행합니다.
% tar c folder | tar x --to-command 'printf "%s\n" "$TAR_REALNAME"'
folder/subdir1/file1.txt
folder/subdir1/file2.txt
folder/subdir2/file1.txt
TAR_FILETYPE
현재 이 옵션은 일반 파일만 명령으로 전송하지만 tar로 설정된 변수를 사용하여 향후 지원되는 디렉터리를 방지하는 것은 어렵지 않습니다.
% tar c folder | tar x --to-command '[ "$TAR_FILETYPE" != d ] && printf "%s\n" "$TAR_REALNAME"'
folder/subdir1/file1.txt
folder/subdir1/file2.txt
folder/subdir2/file1.txt