재미있는 사실 : Archive Manager 를 사용하고 .tar.gz를 추출하여 “디렉토리 구조 유지”를 해제 하면 tarbomb이 생성 됩니다.
tar -ztf
tar 파일의 모든 파일과 디렉토리를 나열합니다. 디렉토리 구조 없이 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
(이것은 디렉토리를 포함하여 유형에 관계없이 모든 파일을 나열합니다).