tarball을 추출 할 때 대상 디렉토리 작성


25

mkdir -ptar 명령 내에 존재하지 않는 대상 디렉토리를 정의 할 수있는 곳 과 비슷한 대상 디렉토리를 작성할 수 있습니까? tar는 나를 위해 디렉토리를 작성합니까?

를 사용하여 출력을 디렉토리로 리디렉션 할 수 있다는 것을 알고 tar -C /target/dir있지만 대상 디렉토리가 없으면 작동하지 않습니다.


4
가능하지 않으면 언제든지 쉘 별명을 작성할 수 있습니다.
n0pe

답변:


38
mkdir -p /target/dir && tar -C /target/dir

3
스푼 수유 없음, 직선 및 지점.
Amado Martinez

10
사소한 변경 제안 :mkdir -p /target/dir && tar -C $_
Mark Melville

@MarkMelville은 우리에게 $ _가 여기서 무엇을해야하는지 설명합니다
Suhayb

@Suhayb $_는 Bash의 특수 매개 변수로 이전 명령의 마지막 인수로 확장됩니다.
ConceptRat

12
tar -xvf bash.html_node.tar.gz --one-top-level

tar 명령의 맨 페이지에서

--one-top-level[=DIR]

    모든 파일을 DIR 또는 인수없이 사용 된 경우 아카이브의 기본 이름으로 이름이 지정된 서브 디렉토리 (로 식별 할 수있는 표준 압축 접미어 빼기) 로 추출하십시오 --auto-compress.

----- 테스트

시험 1

tar zxvf ../aaa.tgz --one-top-level
aaa/
aaa/222
aaa/111

tree aaa
aaa/
├── 111
└── 222

// tgz 이름이 archive의 root_dir과 동일하면 다른 효과가 없습니다.

테스트 2

mv ../aaa.tgz ../bbb.tgz

tar zxvf ../bbb.tgz --one-top-level
aaa/
aaa/222
aaa/111

tree bbb
bbb
└── aaa
    ├── 111
    └── 222

// tgz 이름이 archive의 root_dir과 동일하지 않은 경우 최상위 디렉토리를 작성하십시오.


3
GNU 타르가 필요합니까? Mac 기본 bsd tar에는이 옵션이 없습니다.
커티스 얄롭

1
예, 더 명확하게 언급해야합니다.
kcrisman

5

이것은 나에게 더 의미가 있었다. mkdir -p /create/folder && tar -zxf haroopad-v0.13.0_x64.tar.gz -C /create/testfolder

mkdir-p스위치를 이해하지 못하더라도 폴더를 만듭니다 . &&두 번째 명령을 실행할 수 있습니다. 나는 전형적인 타르 스위치를 사용했지만 결국 -C디렉토리를 변경하고 필요한 위치로 추출하는 데 사용됩니다.

참조 : 아카이브 파일에 포함 된 추출 파일-tar-gz-새 디렉토리 이름이 지정된 아카이브


2
디렉토리가 이미 존재하면 -p 스위치는 오류를 발생시키지 않습니다.
David

@David 또한 /create존재하지 않는 주요 디렉토리를 생성 합니다. 즉 존재하지 않는 경우 생성 합니다.
Antonio Pérez

1

생성 할 경로를 모르는 경우 ...
tar 파일에서 필요한 경로를 가져 와서 생성하십시오 ...

for P in \`tar tvf tarfile.tar |tr -s [:space:] |cut -d' ' -f6\`; do  
    C=\`echo "${P: -1}"\`  #get the last character  
    if [ $C = '/' ]; then  
        echo "Found directory: $P"  
        mkdir -p $P  
    fi  
done
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.