Powershell - 如何将目录中所有文本文件的第一行提取到单个输出文件中?

标签 powershell text large-files

我有一个包含大约 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/

相关文章:

excel - Powershell ,无法另存为该名称。文档以只读方式打开

powershell - 您可以从Powershell中的PostCommandLookupAction访问/修改参数吗?

excel - 文本/字符串上的 DAX LOOKUPVALUE

text - 使用大量替换对在文本文件中执行大量替换

c# - 解析大文本文件,即时修改

从大文件中按数字读取行

mysql - 这个sql update语句有什么问题?

c# - Powershell WMI 输出与 c# WMI 输出不匹配

html - 如何在html中的按钮中设置文本大小

ios - UITextField——观察 selectedTextRange 的变化?