it-swarm-ja.tech

zip:引数リストが長すぎます(全体で80.000ファイル)

80.000ファイルを複数のZipファイルに圧縮する必要があります。これは私が使用するコマンドです:

Zip -s 200M photos_test/*

ただし、次のエラーが発生します。

-bash: /usr/bin/Zip: Argument list too long

フォルダファイルを手動で分割する以外に、問題を解決するにはどうすればよいですか?

ありがとう

14
aneuryzm

ディレクトリ全体が必要な場合は、-rスイッチを使用するだけです。

Zip -r -s 200M myzip photos_test

ただし、photos_testのすべてのサブディレクトリが含まれます。

14
Mat

問題は「*」の展開にあるようです。フォルダ名または「。」を使用します。

Zip内にルートフォルダを含める場合:

Zip -r my.Zip folder_with_80k_files

ルートフォルダーをZip内に含めない場合:

cd folder_with_80k_files
Zip -r my.Zip .
9
stoffen
find photos_test/ -mindepth 1 -maxdepth 1 | Zip [email protected] -s 200M

ls photos_test | Zip -s 200M [email protected] photos

  • [email protected]は、Zipにstdinからファイルのリストを読み取らせます。
  • |lsの-​​outputZipコマンドのinputにパイプします

man Zip

USE
⋮
   [email protected] file lists.  If a file list is specified as [email protected] [Not on MacOS], Zip takes
   the  list  of  input  files from standard input instead of from the command
   line.  For example,

          Zip [email protected] 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 [email protected]

   (note that the pattern must be quoted to keep the Shell from expanding it).
⋮
3
Mr. Tao