2011-08-16 4 views
0

저는 파일이 많으며, 각각 1000MB 파일을 가지고 있으며 각각 4MB를 가지고 있습니다. 완전히 4GB가 있습니다. INPUT_UNSORTED가 1000 개 파일을 추가하여 만든 큰 파일입니다유닉스 정렬을 할 때 디스크 사용을 최소화하십시오.

sort -t ',' -k 1,1 -k 5,7 -k 22,22 -k 2,2r INPUT_UNSORTED_${current_time}.DAT -o INPUT_SORTED_${current_time}.DAT 

: 나는 유닉스 정렬을 사용하여 그들을 정렬 싶습니다, 여기 내 명령입니다. 그래서 또 다른 4GB가 있습니다. INPUT_SORTED도 4GB입니다.

그리고 유닉스 정렬 파일을 정렬하는 임시 폴더를 사용하여 발견하고, 임시 파일도 4GB에 도달 할 수 있습니다.

성능을 유지하면서 디스크 사용량을 줄일 수있는 방법은 무엇입니까?

+1

아마도 1000 개의 파일을 연결하지 말고 별도로 "정렬"해야합니다. http://stackoverflow.com/questions/3581215/in-unix-is-it-better-to-sort-multiple-small -files-or-one-big-file – Thilo

답변

2

하나의 큰 정렬 된 출력 파일을 얻으려고하십니까? 정렬의 --merge 옵션을 살펴보십시오. 작은 입력 파일을 개별적으로 정렬 한 다음 모든 파일을 큰 정렬 된 출력으로 병합 할 수 있습니다. 분류되지 않은 입력 파일을 정렬 된 대응 파일을 생성 한 직후에 삭제하면 중간 결과에 4MB 이상의 공간을 사용하지 않습니다.

+0

나의 최종 목표는 큰 출력을 4MB의 작은 파일로 분할하는 것이다. 오류가 발생할 수 있고 입력 파일이 손실 될 수 있으므로 즉시 입력 파일을 삭제하고 싶지 않습니다. – lamwaiman1988

+0

'sort'의 종료 상태를 확인하여 입력 파일을 삭제하기 전에 성공했는지 여부를 확인할 수 있으므로 실패 할 경우 데이터를 잃지 않습니다. 그리고 나는 당신이 함께 파일들을 결합하기를 원하기 때문에 모든 파일들을 함께 결합하고 있다고 가정합니다, 그래서'input99' 파일에 "aardvark"가 들어 있으면'output99'의 시작이 아니라'output1'에 들어갑니다. 그렇지 않으면 각 4MB 파일을 개별적으로 정렬 할 수 있습니다. – Wyzard

관련 문제