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

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

于 2016-08-04T09:42:12.397 回答
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 回答