回答:
ディレクトリ全体が必要な場合は、単に-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
は次の場合に発生する可能性-r
があります。1-スイッチを使用していないため、2-アーカイブするファイルが多すぎます。したがって、最初のケースでは@Matの答えは真であり、2番目のケースでは@ IgnacioVazquez-Abramsの答えは真です。