在Windows PowerShell中递归列出特定文件类型

5
我试图在Windows PowerShell中使用ls递归地列出目录中所有*.py文件,但没有成功。我查看了man页面和在线页面后得知,-Recurse标志不接受通配符,因此*.py无效。
我想知道是否有一种内置方式可以使用Windows PowerShell 2.0递归列出目录中特定文件扩展名的文件?
我是PowerShell的新手,在这个阶段不想进行Shell脚本编写。因此,请只推荐内置命令、标志等,如果有的话。
我所说的命令是指PowerShell的内置关键词。我不确定这是否是PowerShell的正确术语。
4个回答

8

使用Filter参数:

ls $path -filter *.py -recurse

3
这将为您解决问题。
gci -Recurse | ? {$_.name -match ".py"}

或者

gci -Recurse -Include *.py

0

ls 是 Get-ChildItem 的别名(dir 和 gci 也是)。简单的谷歌搜索会给你各种各样的例子,但需要知道的是 -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


0

我不明白有人如何在任何时候使其工作。

gci -recurse 可以正常工作并列出所有文件。 gci -filter *.txt 可以正常工作,列出所有 .txt 文件,但不会递归。

gci -filter *.txt -recurse 要么只返回根目录下的 .txt 文件,要么什么都不返回。 它似乎将 *.txt 过滤器应用于目录名称,因此看不到目录,因此根本不会递归。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接