我有一个包含大约 10'000 个不同长度的文本文件的目录。全部超过 1GB 大小。
我需要提取每个文件的第一行并将其插入到同一目录中的新文本文件中。
我尝试过通常的 MS-DOS 批处理文件方法,但由于文件太大而崩溃。
有没有办法使用 Streamreader 在 Powershell 中做到这一点?
最佳答案
编辑 :当然有一种内置的方式:
$firstLine = Get-Content -Path $fileName -TotalCount 1
[确认Raf的评论]
原来的:
我建议看
File.ReadLines
:这个方法懒惰地读取文件的内容——只在每次迭代返回的枚举器时读取内容。我不确定
Select-Object -first 1
将在一行之后主动停止管道,如果是这样,那么这是获取第一行的最简单方法:$firstLine = [IO.File]::ReadLines($filename, [text.encoding]::UTF8) | Select-Object -first 1
否则像:
$lines = [IO.File]::ReadLines($filename, [text.encoding]::UTF8); # adjust to correct encoding
$lineEnum = $lines.GetEncumerator();
if ($lineEnum.MoveNext()) {
$firstLine = $lineEnum.Current;
} else {
# No lines in file
}
注意。这假设至少 PowerShell V3 使用 .NET V4。
关于Powershell - 如何将目录中所有文本文件的第一行提取到单个输出文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24386845/