‘tar’의 압축을 풀고 추출 할 디렉토리 이름을 변경하십시오. tar -tf filename.tar folder1/file folder1/name […] folder2에

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/'