我试图通过创建一个数组来压缩一定数量的文件。然后我尝试运行 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 -@
所以步骤是:
建立所有要归档的文件的列表,格式必须为一个文件名一行
运行
zip
命令cat BIG_FILENAME_LIST.txt | zip thebigziparchive -@