tar -tf filename.tar
folder1/file
folder1/name
[...]
folder2에 파일 과 이름 을 추출하고 싶습니다 . 이것을 한 줄짜리로 할 수 있습니까?
답변
사용 -C
및 --strip-components
(참조 man tar
).
예:
mkdir FOLDER
# for remote tar file
curl -L ’remote_tar_file' | tar -xz - -C FOLDER --strip-components=1
# for local tar file
tar -xzf FILENAME -C FOLDER --strip-components=1
설명:
-C
플래그는 tar 파일의 내용이 그것으로 확장 할 수 있도록 디렉토리이 이미 가정합니다. 따라서 mkdir FOLDER
.
이 --strip-components
플래그는 tar 파일이 폴더로 자연스럽게 확장 될 때 사용됩니다 repo-name-master
. 물론 여기서 생성 된 첫 번째 레벨 폴더가 필요하지 않으므로 첫 번째 폴더를 자동으로 제거 하도록 --strip-components
설정 하십시오 1
. 숫자가 클수록 더 깊은 중첩 폴더가 제거됩니다.
답변
--transform
좀 더 융통성있게 옵션을 사용할 수도 있습니다 . sed 교체 작업을 허용합니다.
예를 들어, 다음은 패치를 적용 할 수 있도록 Linux tarball을 새 디렉토리에 추출하는 방법입니다.
tar -xjf linux-2.6.38.tar.bz2 --transform 's/linux-2.6.38/linux-2.6.38.1/'