使用 PowerShell 列出目录中超过 100 行的所有文本文件

标签 list powershell text lines

你好,我是 PowerShell 初学者。我正在寻找一个脚本,它可以查找并列出目录 (*.TXT) 中超过 100 行的所有文本文件。

此代码显示目录中的最大和最小行数,但不列出具有最小或最大行数的文件。

dir . -filter "*.txt" -Recurse -name | foreach{(GC $_).Count} | measure-object -sum -max -min

最佳答案

你们非常接近。您拥有正确的命令行开关 (Measure-Object);您只需使用 -Line 参数,然后使用 Where-Object 即可。请注意 Select-Object-ExpandProperty 的使用。这就是将 TextMeasureInfo 对象的集合转换为整数集合的原因。这对我有用:

Get-ChildItem . -Filter "*.txt" -Recurse |
    Where-Object {
        (Get-Content $_.FullName |
         Measure-Object -Line |
         Select-Object -ExpandProperty Lines) -gt 100
    }

如果您想将其放在一行并使用别名,则等效:

dir . -filter "*.txt" -Recurse | ? {(gc $_.FullName | Measure -Line | Select -Expand Lines) -gt 100 }

您还询问了如何查找具有最小和最大行数的文件。我不建议将其写在一行中,因为它变得不可读。为此,您需要在 Where-Object ScriptBlock 内有一个中间变量:

$minLines = 10
$maxLines = 200

Get-ChildItem . -Filter "*.txt" -Recurse |
    Where-Object {
        $numLines = Get-Content $_.FullName |
            Measure-Object -Line |
            Select-Object -ExpandProperty Lines
        if (($numLines -gt $minLines) -and ($numLines -lt $maxLines)) {
            return $_
        }
    }

关于使用 PowerShell 列出目录中超过 100 行的所有文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24353591/

相关文章:

c - 在链表的前面插入一个节点

powershell - 试试看:如果TRY成功完成,请采取一些措施

java - 如何使用 java 反射返回包含对象以外的内容的集合

r - 根据组包含的值计算组之间观察计数的差异

Powershell 和 winrar 命令行

jquery - 使用 jquery 或其他方式倒计时文本区域中的可用空间?

c++ - 计算文本文件中的行数

c# - 控制查看包含大量文本的文件

android - java.lang.UnsupportedOperationException android 数组列表

powershell - 获取证书的指纹