답변:
전체 디렉토리를 원하면 -r
스위치 를 사용하면됩니다 .
zip -r -s 200M myzip photos_test
여기에는 모든 하위 디렉토리가 포함됩니다 photos_test
.
find photos_test/ -mindepth 1 -maxdepth 1 | zip -@ -s 200M
find . -mindepth 1 -maxdepth -name '*.json' | zip {YOURZIPFILENAME}.zip -@
분할 할 필요가없고 확장자별로 파일을 선택하려는 경우에 사용하십시오 .
ls photos_test | zip -s 200M -@ photos
-@
zip이 stdin 에서 파일 목록을 읽게합니다.|
명령 의 입력 으로 출력 을 파이프합니다ls
zip
man zip
:
USE ⋮ -@ file lists. If a file list is specified as -@ [Not on MacOS], zip takes the list of input files from standard input instead of from the command line. For example, zip -@ foo will store the files listed one per line on stdin in foo.zip. Under Unix, this option can be used to powerful effect in conjunction with the find (1) command. For example, to archive all the C source files in the current directory and its subdirectories: find . -name "*.[ch]" -print | zip source -@ (note that the pattern must be quoted to keep the shell from expanding it). ⋮
-bash: /usr/bin/zip: Argument list too long
는 다음과 같은 경우에 발생할 수 있습니다. 1--r
스위치를 사용하지 않아서 , 2- 아카이브 할 파일이 너무 많습니다. 따라서 첫 번째 경우 @Mat의 대답은 사실이고 두 번째 경우 @ IgnacioVazquez-Abrams의 대답은 사실입니다.