压缩文件夹中某些文件的大型列表时参数列表太长

压缩文件夹中某些文件的大型列表时参数列表太长

我试图通过创建一个数组来压缩一定数量的文件。然后我尝试运行 zip 命令,但遇到“参数列表太长”错误。

declare -a arr=()       

fixed=5
for i in `seq 10 1 200`; do
    for j in `seq $((i+fixed)) 1 200`; do
        arr+=("${i}_${j}.xxx")
    done
done

new_arr=$(printf ",%s" "${arr[@]}")
new_arr=${new_arr:1}

zip all_data.zip {$new_arr}

答案1

摘自 man zip(Linux版本)

   zip -@ foo
   will store the files listed one per line on stdin in foo.zip.

来自同一手册页的示例

   find . -name "*.[ch]" -print | zip source -@

所以步骤是:

  1. 建立所有要归档的文件的列表,格式必须为一个文件名一行

  2. 运行zip命令

    cat BIG_FILENAME_LIST.txt | zip thebigziparchive -@

相关内容