폴더 자체를 포함하지 않고 폴더의 내용을 압축


77

folder다음과 같은 디렉토리가 있습니다 .

folder
      -> root_folder
                    -> some files

이 디렉토리를에 압축하고 싶습니다 zipped_dir.

zip -r zipped_dir.zip folder/*

그러나 이것은 다음과 같은 ZIP을 생성합니다.

zipped_dir
          -> folder
                   -> root_folder
                                 -> some files

즉, 내용을 압축하려는 디렉토리를 포함합니다. 아무것도 움직이지 않고 어떻게 ZIP에서이 부모 디렉토리를 제외시킬 수 있습니까?

IE 나는이 최종 결과를 원합니다 :

zipped_dir
          -> root_folder
                        -> some files

답변:


75

이 명령을 사용하십시오 (아이디어를 얻습니다)

cd folder; zip -r ../zipped_dir.zip *

어쩌면 다른 방법이있을 수 있지만 이것은 가장 빠르고 간단합니다. :)


2
이것은 그 트릭을 완벽하게 수행합니다. 참고 : 그것은 할 것입니다 chroot .
loretoparisi

해당 :zip -r zipped_dir.zip folder/*
토비아스 콜브

5
@TobiasKolb, 아마도 당신은 질문을 읽지 못할 것입니다. OP는 zip의 저장된 경로에 폴더 를 넣고 싶지 않습니다 .
Romeo Ninov

2
할 수있는 유일한 방법 인 것 같습니다
Robert

1
@PabloDiaz, 내 예제 cd -에서 작업을 수행합니다 (하나의 명령 만) :) 또는cd ..
Romeo Ninov

30

사용 -j; 예를 들면 다음과 같습니다.zip -r -j zipped_dir.zip folder/*

'root_folder'를 압축하지 않습니다.


7
같은 이름의 두 파일이 있으면이 파일에 오류가 발생합니다.
Chris

11
OP는 아마도 부모 디렉토리 만 제거하기를 원할 것입니다.
tokland

아직 디렉토리를 생성하는 zip -r -j package.zip ./dist/static/*아카이브 구조를 만든다dist/static/myfiels
deathangel908

4
하위 디렉토리 파일도 평평하게 만듭니다.
서밋 람 테케

3
-j옵션은 모든 디렉토리 정보를 제거하고 파일 만 저장합니다. 즉, 모든 파일을 "플랫"방식으로 하나의 디렉토리에 저장합니다.
Robert

5
zip -r -D zipped.zip *

-D zip에게 디렉토리를 만들지 않도록 지시합니다.


0

이것이 나를 위해 작동하는 것입니다.

7z a zipped.zip ./rootDir/*

zip루트가 있는 아카이브를 만듭니다 rootDir. 내부의 모든 파일 / 디렉토리 .

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