List 使用PowerShell列出目录中超过100行的所有文本文件
你好,我是PowerShell初学者。我正在寻找一个脚本,它可以找到并列出一个目录*.TXT中超过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
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脚本的初学者。