폴더에 있는 특정 파일의 큰 목록을 압축할 때 매개변수 목록이 너무 깁니다.

폴더에 있는 특정 파일의 큰 목록을 압축할 때 매개변수 목록이 너무 깁니다.

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

관련 정보