Câu trả lời:
Nếu bạn muốn toàn bộ thư mục, bạn chỉ cần sử dụng -r
chuyển đổi:
zip -r -s 200M myzip photos_test
Điều đó sẽ bao gồm tất cả các thư mục con photos_test
mặc dù.
find photos_test/ -mindepth 1 -maxdepth 1 | zip -@ -s 200M
find . -mindepth 1 -maxdepth -name '*.json' | zip {YOURZIPFILENAME}.zip -@
nếu bạn không cần phải phân tách và muốn chọn tệp theo tiện ích mở rộng.
ls photos_test | zip -s 200M -@ photos
-@
sẽ khiến zip đọc danh sách các tệp từ stdin|
ý ống một đầu ra của ls
vào đầu vào của zip
lệnhman 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
có thể gây ra trong trường hợp: 1- vì không sử dụng-r
chuyển đổi, 2- có quá nhiều tệp để lưu trữ. Vì vậy, trong trường hợp đầu tiên, câu trả lời của @ Mat là đúng và trong trường hợp thứ hai, câu trả lời của @ IgnacioVazquez-Abrams là đúng.