2016-08-04 44 views
1

我有几个文本文件,我想将它们合并为一个。包含所有单独文本文件的文件夹大小接近8Gb。我试图在PowerShell中的以下内容:组合超大文本文件的最佳方式

cat example*.txt | sc allexamples.txt 

,但只要结合文件的大小达到接近800 MB的笔记本电脑悬挂和Im不能进一步进行。任何其他方式我可以做到这一点?

+0

我会在压缩的时候使用LibreOffice的'.odt'文档。但可能需要编程。 –

+4

你有没有试过(从命令提示符)'copy/b example * .txt allexamples.txt'? –

+1

从* how *,*为什么*?什么是一个大的不可管理的8GB文件获得你认为你不能从单独的文件做? –

回答

0

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

3

它也可以在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() 
0

Get-Content -readcount在这里可以帮助我们找到内存消耗和速度之间的平衡。我想尝试类似

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

什么是最佳值的读数取决于文件大小,内存可用和处理能力。

相关问题