타르 목록 파일 만 를 사용하고 .tar.gz를 추출하여 “디렉토리 구조 유지”를

재미있는 사실 : Archive Manager 를 사용하고 .tar.gz를 추출하여 “디렉토리 구조 유지”를 해제 하면 tarbomb이 생성 됩니다.

tar -ztftar 파일의 모든 파일과 디렉토리를 나열합니다. 디렉토리 구조 없이 tar 파일의 모든 파일을 나열하는 방법이 있습니까?



답변

매뉴얼 페이지에서 방법을 찾지 못하지만 결과를 항상 필터링 할 수 있습니다. 다음은 파일 이름에 줄 바꿈이 없다고 가정합니다.

tar tzf your_archive | awk -F/ '{ if($NF != "") print $NF }'

작동 원리

필드 구분 기호를로 설정하면 /마지막 필드 awk는 ( $NF) 파일 이름을 처리하는 경우 파일 이름이거나 디렉토리 이름을 처리하는 경우 비어 있습니다 (디렉토리 이름 tar에 후행 슬래시 추가). 따라서 기본적으로 awk마지막 필드가 비어 있지 않으면 인쇄하도록 지시합니다.


답변

Joseph R.의 제안을 사용하여로 끝나지 않는 줄을 찾아서 정규식 [^/]$grep사용하여 파일 을 사용할 수 있습니다 /.

tar tzf archive.tar.gz | grep -e "[^/]$"


답변

개행을 포함하는 파일 이름이 없다고 가정하면 :

tar -tf foo.tar | sed -e 's#.*/##' -e '\#.#!d'

첫 번째 sed 명령은 /파일 이름 부분 만 인쇄되도록 한 행 에서 마지막 행 이전의 모든 것을 제거합니다 . 두 번째 명령은 현재 비어있는 행, 즉 /디렉토리로 끝나는 행을 삭제합니다 .


답변

pax(읽기에 POSIX 명령 tar파일) :

pax -'s@.*/@@' < file.tar

(이것은 디렉토리를 포함하여 유형에 관계없이 모든 파일을 나열합니다).