디렉토리를 변경할 수없는 스크립트에서 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 내의 구조를 파괴하는 것
답변
주석에서 알 수 있듯이 스크립트를 사용하여 디렉토리를 변경하는 방법을 알았으므로 상대 경로와 관련하여 zip으로 상황을 설명하겠습니다.
이 단자와 열 아마 가장 쉬운 cd
에 kit123
; 대상 디렉토리를 작업 디렉토리로 만들어야합니다-홈 디렉토리의 기초에서 명령을 실행할 수 없거나 모든 경로를 선택합니다 /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