이 명령을 사용하여 zip 파일을 만들어야합니다.
zip /dir/to/file/newZip /data/to/zip/data.txt
이것은 작동하지만 생성 된 zip 파일은 원시 파일과 디렉토리를 모방 한 디렉토리 구조를 만듭니다. 내가 필요로하지 않는 추가 폴더가 많이 있습니다.
맨 페이지 나 Google 헌트를 한 눈에 볼 수있는 답변을 찾지 못했습니다.
이 명령을 사용하여 zip 파일을 만들어야합니다.
zip /dir/to/file/newZip /data/to/zip/data.txt
이것은 작동하지만 생성 된 zip 파일은 원시 파일과 디렉토리를 모방 한 디렉토리 구조를 만듭니다. 내가 필요로하지 않는 추가 폴더가 많이 있습니다.
맨 페이지 나 Google 헌트를 한 눈에 볼 수있는 답변을 찾지 못했습니다.
답변:
사용할 수 있습니다 -j
.
-j
--junk-paths
Store just the name of a saved file (junk the path), and do not
store directory names. By default, zip will store the full path
(relative to the current directory).
옵션 -j
과 함께 사용 하면 작동하지 않습니다 -r
.
따라서 이에 대한 해결 방법은 다음과 같습니다.
cd path/to/parent/dir/;
zip -r complete/path/to/name.zip ./* ;
cd -;
또는 인라인 버전
cd path/to/parent/dir/ && zip -r complete/path/to/name.zip ./* && cd -
화면에 출력을 표시 /dev/null
하지 않으려면 출력을 지시 할 수 cd -
있습니다
cd path/to/parent/dir/ && zip -r ../../../../name.zip ./* && cd -
cd path/to/parent/dir/
이중 점 ../
수를 쉽게 계산할 수 있습니다.
다소 관련이 있습니다-디렉토리에 대해 동일한 작업을 수행하는 솔루션을 찾고있었습니다. 불행히도이 -j
옵션은 작동하지 않습니다 :(
이를 수행하는 방법에 대한 좋은 해결책은 다음과 같습니다. /superuser/119649/avoid-unwanted-path-in-zip-file
unzip
파일을 어디에서나 흘리지 않습니다.디렉토리를 압축 할 때 상위 디렉토리를 아카이브에 유지하면 나중에 아카이브 파일의 압축을 풀 때 현재 디렉토리가 흩어지지 않습니다.
따라서 모든 경로를 유지하지 않으려면 -j와 -r을 함께 사용할 수 없으므로 (오류가 발생합니다) 대신 다음을 수행 할 수 있습니다.
cd path/to/parent/dir/;
zip -r ../my.zip ../$(basename $PWD)
cd -;
는 ../$(basename $PWD)
상위 디렉토리를 유지 마법이다.
이제 unzip my.zip
모든 파일을 포함하는 폴더를 제공합니다.
parent-directory
├── file1
├── file2
├── dir1
│ ├── file3
│ ├── file4
압축이 풀린 파일로 현재 디렉토리를 비우는 대신 :
file1
file2
dir1
├── file3
├── file4
-jrm
옵션을 사용하여 파일 및 디렉토리 구조를 제거하십시오.
zip -jrm /path/to/file.zip /path/to/file