我有几个文本文件,我想将它们合并为一个。包含所有单独文本文件的文件夹大小接近8Gb。我在powershell中尝试了以下内容:
cat example*.txt | sc allexamples.txt
但是一旦组合文件的大小接近800 Mb,笔记本电脑就会挂起,我无法继续前进。我可以用其他任何方式做到这一点吗?
答案 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的最佳值取决于文件大小,可用内存和处理能力。