대용량 파일을 덩어리로 나누고 원본 파일을 삭제하시겠습니까?

대용량 파일을 덩어리로 나누고 원본 파일을 삭제하시겠습니까?

대용량 텍스트 파일(30GB)을 처리하는 데 문제가 있습니다.

더 작은 파일(예: 5GB)을 만들고 싶습니다.

하지만 안타깝게도 더 많은 저장 공간이 없습니다(최대 10G만 사용 가능).

이 줄은:

split -b 5g "file.txt" "file.txt."

원본 파일을 유지한다는 것은 결국 총 60GB의 파일을 갖게 된다는 것을 의미합니다. 이는 실제로 내 컴퓨터에 남아 있는 것보다 더 많은 공간입니다.

원본 파일을 유지하지 않고 동일한 기능으로 코드를 실행하려면 어떻게 해야 합니까?

답변1

오직~1.03G사용 가능한 디스크 공간,
분할 파일~9.3G의 크기.

이 파일을 10개의 작은 파일로 나눌 것입니다. 각 작은 파일은 약1G의 크기.

for i in {1..10}; do
    tail -c 1G bigfile >split_file_$i && truncate -s -1G bigfile;
done

이것은 거의 사용1G사용 가능한 디스크 공간~1.03G가능하고 오직~30M갈때마다 항상 남는게 있어요! (저는 테스트 환경에 있습니다.) 물론 사용 가능한 여유 디스크 공간에 따라 분할 크기를 조정해야 합니다.사용 가능한 공간을 모두 사용하지 마십시오!, 예를 들어 최대 80%를 사용합니다.


파일에 다시 추가:

for file in split_file_{10..1}; do
    cat "$file" >>bigfile_joined && rm "$file"; 
done

관련 정보