작업 디렉토리 대신 대상 디렉토리를 기준으로 zip 파일의 디렉토리를 만드는 방법


25

디렉토리를 변경할 수없는 스크립트에서 zip 명령을 호출하고 있습니다. data/kit123/데이터가있는 디렉토리에서 물건의 zip 파일을 만들어야 하지만 zip의 내용은 kit123경로가있는 kit123.

이것은 디렉토리 구조입니다

myworkingdir
    data
        kit123
            kitpart1
                file.xcf
                anotherfile.xcf
            kitpart2
                ...
        kit124
            ...

내 스크립트는 myworkingdir에서 실행되며 디렉토리를 변경할 수 없습니다.

내가 전화하면

zip -r kit123.zip data/kit123

zip 파일의 구조는

data
    kit123
        kitpart1
            file.xcf
            anotherfile.xcf
        kitpart2

하지만 나는 그것을 원한다

kit123
    kitpart1
        file.xcf
        anotherfile.xcf
    kitpart2

이것을 달성하기 위해 사용할 수있는 zip 옵션이 있습니까? 내 작업 디렉토리에 의존 해야하는 것이 이상해 보입니다.

나는 그것이 -j가 아니라는 것을 안다. kit123 내의 구조를 파괴하는 것


Bah, 나는 dir (Python에서)을 변경하는 방법을 알지 못했다. 나는 방금 잘 조직 된 권한을 가지고 있었다. 그래도 zip에 그러한 옵션이 있는지 알고 싶습니다.
Nathan Nathan

답변:


18

주석에서 알 수 있듯이 스크립트를 사용하여 디렉토리를 변경하는 방법을 알았으므로 상대 경로와 관련하여 zip으로 상황을 설명하겠습니다.

이 단자와 열 아마 가장 쉬운 cdkit123; 대상 디렉토리를 작업 디렉토리로 만들어야합니다-홈 디렉토리의 기초에서 명령을 실행할 수 없거나 모든 경로를 선택합니다 /home/$USER/... -j옵션 을 사용하면 모든 경로가 제거됩니다. --strip다른 레벨의 경로 제거를 지정할 수있는 tar 옵션 과 같은 것은 아닙니다 .

따라서 대상 디렉토리 ( kit123)로 cd하고 다음을 입력하십시오.

zip -r kit123.zip *

이 옵션은 현재 디렉토리 ( ) 에있는 -r모든 *파일과 디렉토리를 재귀 적으로 ( ) 보존 하며 옵션이 없으면 kit123상대 경로 ( -p)가 자동으로 보존 -j되므로 디렉토리 구조는 원하는대로됩니다. 자체 파일이있는 Kit123하위 폴더 ( kitpart1)가 나타납니다.

kit123
    kitpart1
        file.xcf
        anotherfile.xcf
    kitpart2

으로 zip 파일의 내용을 확인할 수 있습니다 unzip -l zipfile.zip.

사용 가능한 다른 옵션에 대한 자세한 내용 은 Ubuntu 맨 페이지 온라인을zip 참조하십시오 .man zip

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.