배열을 생성하여 특정 개수의 파일을 압축하려고 합니다. 그런 다음 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 -@