我有几个文本文件,我想将它们合并为一个。包含所有单独文本文件的文件夹大小接近8Gb。我试图在PowerShell中的以下内容:组合超大文本文件的最佳方式
cat example*.txt | sc allexamples.txt
,但只要结合文件的大小达到接近800 MB的笔记本电脑悬挂和Im不能进一步进行。任何其他方式我可以做到这一点?
我有几个文本文件,我想将它们合并为一个。包含所有单独文本文件的文件夹大小接近8Gb。我试图在PowerShell中的以下内容:组合超大文本文件的最佳方式
cat example*.txt | sc allexamples.txt
,但只要结合文件的大小达到接近800 MB的笔记本电脑悬挂和Im不能进一步进行。任何其他方式我可以做到这一点?
它挂起的原因是由于内存不足。你的命令实质上做的是将输出传送到缓冲区,然后重定向到另一个文件。你应该做的是在Python中编写一个简单的脚本来为你合并文件。 Python有支持这种操作的函数/类。
它也可以在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
}
什么是最佳值的读数取决于文件大小,内存可用和处理能力。
我会在压缩的时候使用LibreOffice的'.odt'文档。但可能需要编程。 –
你有没有试过(从命令提示符)'copy/b example * .txt allexamples.txt'? –
从* how *,*为什么*?什么是一个大的不可管理的8GB文件获得你认为你不能从单独的文件做? –