1

複数のテキスト ファイルを 1 つに結合したいと考えています。すべての個別のテキスト ファイルを含むフォルダーのサイズは、ほぼ 8Gb です。私はpowershellで次のことを試しました:

cat example*.txt | sc allexamples.txt

しかし、結合されたファイルのサイズが 800 Mb 近くになるとすぐに、ラップトップがハングし、それ以上先に進むことができなくなります。これを行うことができる他の方法はありますか?

4

3 に答える 3

4

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()
于 2016-08-04T09:48:49.600 に答える
0

Get-Content -readcount は、メモリ消費と速度の適切なバランスを見つけるのに非常に役立ちます。私は何かを試してみます

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

readcount の最適な値は、ファイルサイズ、使用可能なメモリ、および処理能力によって異なります。

于 2016-08-04T11:47:52.903 に答える
0

ハングする理由は、メモリ不足によるものです。コマンドが本質的に行うことは、出力をバッファにパイプし、その後別のファイルにリダイレクトすることです。あなたがすべきことは、ファイルをマージするための簡単なスクリプトをPythonで書くことです。Python には、このような操作をサポートする関数/クラスがあります。

于 2016-08-04T09:42:12.397 に答える