组合超大文本文件的最佳方法

时间:2016-08-04 09:39:03

标签: powershell text cmd combiners

我有几个文本文件,我想将它们合并为一个。包含所有单独文本文件的文件夹大小接近8Gb。我在powershell中尝试了以下内容:

cat example*.txt | sc allexamples.txt

但是一旦组合文件的大小接近800 Mb,笔记本电脑就会挂起,我无法继续前进。我可以用其他任何方式做到这一点吗?

3 个答案:

答案 0 :(得分: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()

答案 1 :(得分:0)

它挂起的原因是由于内存不足。你的命令本质上是将输出传递给缓冲区,然后重定向到另一个文件。你应该做的是在python中编写一个简单的脚本来为你合并文件。 Python具有支持此类操作的函数/类。

答案 2 :(得分:0)

Get-Content -readcount可以帮助我找到内存消耗和速度之间的平衡。我尝试过像

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

readcount的最佳值取决于文件大小,可用内存和处理能力。