複数のテキスト ファイルを 1 つに結合したいと考えています。すべての個別のテキスト ファイルを含むフォルダーのサイズは、ほぼ 8Gb です。私はpowershellで次のことを試しました:
cat example*.txt | sc allexamples.txt
しかし、結合されたファイルのサイズが 800 Mb 近くになるとすぐに、ラップトップがハングし、それ以上先に進むことができなくなります。これを行うことができる他の方法はありますか?
複数のテキスト ファイルを 1 つに結合したいと考えています。すべての個別のテキスト ファイルを含むフォルダーのサイズは、ほぼ 8Gb です。私はpowershellで次のことを試しました:
cat example*.txt | sc allexamples.txt
しかし、結合されたファイルのサイズが 800 Mb 近くになるとすぐに、ラップトップがハングし、それ以上先に進むことができなくなります。これを行うことができる他の方法はありますか?
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()
Get-Content -readcount は、メモリ消費と速度の適切なバランスを見つけるのに非常に役立ちます。私は何かを試してみます
Foreach ($File in (Get-Childitem <Folder> -Filter example*.txt)) {
Get-Content $File -Readcount 1000 | Out-File allexamples.txt -Append
}
readcount の最適な値は、ファイルサイズ、使用可能なメモリ、および処理能力によって異なります。
ハングする理由は、メモリ不足によるものです。コマンドが本質的に行うことは、出力をバッファにパイプし、その後別のファイルにリダイレクトすることです。あなたがすべきことは、ファイルをマージするための簡単なスクリプトをPythonで書くことです。Python には、このような操作をサポートする関数/クラスがあります。