2016-08-04 6 views
1

여러 텍스트 파일을 하나로 결합하고 있습니다. 모든 별도의 텍스트 파일을 포함하는 폴더의 크기는 거의 8Gb입니다. 나는 PowerShell에서 다음과 같은 시도 :초대형 텍스트 파일을 결합하는 가장 좋은 방법

cat example*.txt | sc allexamples.txt 

하지만 곧 결합 된 파일의 크기가 800 메가 노트북이 매달려 더 이상 진행하기 임 수없는 가까이에 도달한다. 내가 이것을 할 수있는 다른 방법은 없을까?

+0

LibreOffice'.odt' 문서가 압축됨에 따라 갈 것입니다. 그러나 아마도 프로그래밍이 필요할 것입니다. –

+4

'명령 프롬프트에서'copy/b example * .txt allexamples.txt'로 해봤습니까? –

+1

* how *, * why *와 (과) 어떻게 다른가요? 어떤 unmanagable 8GB 파일은 당신이 당신이 분리 된 파일로 할 수 없다고 생각하는 것을 얻습니다. –

답변

0

메모리가 부족하기 때문에 중단되는 이유가 있습니다. 귀하의 명령이 본질적으로하는 일은 출력을 버퍼로 파이프하는 것과 다른 파일로 리디렉션하는 것입니다. 당신이해야 할 일은 python으로 파일을 병합하는 간단한 스크립트를 작성하는 것입니다. 파이썬에는 이러한 작업을 지원하는 함수/클래스가 있습니다.

3

PowerShell에서도 수행 할 수 있습니다. 조금만 나누거나 스트림 작성기를 사용하여 작업량이 적어 메모리에 물건을 걸지 않아도됩니다.

$file = [system.io.file]::OpenWrite("$($pwd.Path)\allexamples.txt") 
$writer = New-Object System.IO.StreamWriter($file) 

cat example*.txt | ForEach-Object { $writer.WriteLine($_) } 

$writer.Close() 
$file.Close() 
0

Get-Content-readcount는 메모리 소비와 속도 간의 균형을 찾는 데 많은 도움을줍니다. 같은 것을 시도해 보겠습니다.

Foreach ($File in (Get-Childitem <Folder> -Filter example*.txt)) { 
    Get-Content $File -Readcount 1000 | Out-File allexamples.txt -Append 
} 

readcount에 가장 적합한 값은 파일 크기, 사용 가능한 메모리 및 처리 성능에 따라 다릅니다.