Odpowiedzi:
Jeśli chcesz cały katalog, możesz po prostu użyć -r
przełącznika:
zip -r -s 200M myzip photos_test
Obejmuje to wszystkie podkatalogi photos_test
chociaż.
find photos_test/ -mindepth 1 -maxdepth 1 | zip -@ -s 200M
find . -mindepth 1 -maxdepth -name '*.json' | zip {YOURZIPFILENAME}.zip -@
jeśli nie musisz dzielić i chcesz wybierać pliki według rozszerzenia.
ls photos_test | zip -s 200M -@ photos
-@
spowoduje, że zip przeczyta listę plików ze standardowego wejścia|
Rura zostanie przetworzone wyjście z ls
na wejściu z zip
poleceniemman 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
może powodować przypadek: 1 - z powodu nieużywania-r
przełącznika, 2 - jest zbyt wiele plików do archiwizacji. Tak więc w pierwszym przypadku odpowiedź @ Mat jest prawdziwa, aw drugim przypadku odpowiedź @ IgnacioVazquez-Abrams jest prawdziwa.