Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 使用PowerShell列出目录中超过100行的所有文本文件_List_Powershell_Text_Lines - Fatal编程技术网

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

List 使用PowerShell列出目录中超过100行的所有文本文件,list,powershell,text,lines,List,Powershell,Text,Lines,你好,我是PowerShell初学者。我正在寻找一个脚本,它可以找到并列出一个目录*.TXT中超过100行的所有文本文件 此代码显示目录中的最大和最小行数,但不列出具有最小或最大行数的文件 dir . -filter "*.txt" -Recurse -name | foreach{(GC $_).Count} | measure-object -sum -max -min 你很接近。您拥有正确的commandlet度量对象;您只需要使用-Line参数,然后使用Where对象。请注意使用带-E

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

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

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

你很接近。您拥有正确的commandlet度量对象;您只需要使用-Line参数,然后使用Where对象。请注意使用带-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对象脚本块中需要一个中间变量:

$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 $_
        }
    }

你很接近。您拥有正确的commandlet度量对象;您只需要使用-Line参数,然后使用Where对象。请注意使用带-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对象脚本块中需要一个中间变量:

$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 $_
        }
    }

您需要尽最小的努力找出如何递归地列出目录中的文件,然后打开这些文件并找到换行符。做作业,发布代码,然后大声呼救。正如@AdmiralAdama含蓄地指出的,您还需要确定一个文件是否只包含文本。哪种编码是可接受的,ASCII,UTF-8。。。?做文件,如HTML,XML,SVG。。。算为文本文件吗?还是应该使用文件扩展名呢?请参阅以获取文件列表。谢谢Google先生:您需要尽最小的努力找出如何在目录中递归列出文件,然后打开这些文件并找到换行符。做作业,发布代码,然后大声呼救。正如@AdmiralAdama含蓄地指出的,您还需要确定一个文件是否只包含文本。哪种编码是可接受的,ASCII,UTF-8。。。?做文件,如HTML,XML,SVG。。。算为文本文件吗?或者你应该使用文件扩展名吗?请参阅以获取文件列表。谢谢谷歌先生:谢谢。这工作真的很好。还有一个问题。比方说,我不想使用硬数字100行,而是想列出最小和最大行数的.txt文件。不客气。我已经用你的后续问题更新了我的答案。请将我的回答标记为您问题的答案?我非常感谢您的努力,但由于某些原因,第二个脚本无法正常工作。我不知道为什么。我在一个目录中有数百个文本文件,其中有些有700多行,有些只有4或5行。有时,“最小”或“最大”条件满足数十个具有相同行数的文件。我尝试将$minLines更改为1,将$maxLines更改为1000,但由于某些原因,它会列出文件夹中的所有文本文件。如果有多个文件具有最小行,则列出所有文件可能会比列出多个文件具有最大行更清晰。无论如何,感谢您的帮助。我将尝试自己修复它。可能首先在$minLines和$maxLines中以某种方式存储最大和最小行数一个目录的所有文本文件,然后列出一个或多个与最小行数和最大行数匹配的文件。但我可能错了,因为我只是powershell脚本的初学者。谢谢。这工作真的很好。还有一个问题。比方说,我不想使用硬数字100行,而是想列出最小和最大行数的.txt文件。不客气。我已经用你的后续问题更新了我的答案。请将我的回答标记为您问题的答案?我非常感谢您的努力,但由于某些原因,第二个脚本无法正常工作。我不知道为什么。我在一个目录中有数百个文本文件,其中有些有700多行,有些只有4或5行。有时,“最小”或“最大”条件满足数十个具有相同行数的文件。我尝试将$minLines更改为1,将$maxLines更改为1000,但由于某些原因,它会列出文件夹中的所有文本文件。如果有多个文件具有最小行,则列出所有文件可能会比列出多个文件具有最大行更清晰。无论如何,感谢您的帮助。我将尝试自己修复它。可能首先在$minLines和$maxLines中以某种方式存储最大和最小行数一个目录的所有文本文件,然后列出一个或多个与最小行数和最大行数匹配的文件。但我可能错了,因为我只是powershell脚本的初学者。