【问题标题】:Recursive listing of a particular file type in Windows PowerShellWindows PowerShell 中特定文件类型的递归列表
【发布时间】:2013-06-24 16:59:15
【问题描述】:
我试图使用 ls 递归列出 Windows PowerShell 目录中的所有 *.py 文件。它没有用。我检查了man 页面,然后online page 发现-Recurse 标志不接受通配符,所以*.py 不起作用。
我想知道是否有一种简单的内置方法可以使用 Windows PowerShell 2.0 递归地列出目录中特定文件扩展名的文件?
我是 PowerShell 的新手,现阶段不想沉迷于 Shell 脚本。因此,请仅推荐内置命令、标志等(如果有)。
我所说的命令是指 PowerShell 的内置关键字。我不确定这是否是 PowerShell 的正确词汇。
【问题讨论】:
标签:
windows
powershell
windows-7
wildcard
【解决方案1】:
使用过滤器参数:
ls $path -filter *.py -recurse
【解决方案2】:
这将为您解决问题。
gci -Recurse | ? {$_.name -match ".py"}
或
gci -Recurse -Include *.py
【解决方案3】:
ls 是 Get-ChildItem 的别名。 (dir 和 gci 也是如此)。一个简单的 Google 会为您提供各种示例,但要知道的是 -include(或 -exclude)内置参数,将显示(或不显示)您正在查找的文件类型。附加参数 -filter 也可用于部分文件类型。开关参数 -recurse 也会检查目录中子文件夹的内容。示例01:
gci -path \$computername\$directory -Include *.py -recurse
示例02:
gci -path \$computername\$directory -Filter *.py -recurse
我喜欢抑制错误,因此完整示例如下所示:
gci -path \Svr01\C$ -Include *.py -recurse -erroraction SilentlyContinue
【解决方案4】:
我看不出任何人会在任何时候得到这个工作。
gci -recurse 工作正常并列出所有
gci -filter *.txt 工作正常,列出所有 .txt 文件但不递归
gci -filter *.txt -recurse 仅从根目录返回 .txt 文件或不返回任何内容。
似乎将 *.txt 过滤器应用于目录名称,因此看不到目录,因此根本不递归。