5

我试图使用Windows PowerShell 目录中的ls所有文件递归列出。*.py它没有用。我检查了man页面,然后在线页面,该-Recurse标志不接受通配符,因此*.py不起作用。

我想知道是否有一种简单的内置方法可以使用 Windows PowerShell 2.0 递归地列出目录中特定文件扩展名的文件?

我是 PowerShell 的新手,现阶段不想沉迷于 Shell 脚本。因此,请仅推荐内置命令、标志等(如果有)。

我所说的命令是指 PowerShell 的内置关键字。我不确定这是否是 PowerShell 的正确词汇。

4

4 回答 4

8

使用过滤器参数:

ls $path -filter *.py -recurse
于 2013-06-27T09:20:28.883 回答
3

这将为您解决问题。

gci -Recurse | ? {$_.name -match ".py"}

或者

gci -Recurse -Include *.py
于 2013-06-27T09:07:39.150 回答
0

ls 是 Get-ChildItem 的别名。(dir 和 gci 也是如此)。一个简单的 Google 会为您提供各种示例,但要知道的是 -include(或 -exclude)内置参数,将显示(或不显示)您正在查找的文件类型。附加参数 -filter 也可用于部分文件类型。开关参数 -recurse 也会检查目录中子文件夹的内容。Example01: gci -path \$computername\$directory -Include *.py -recurse Example02: gci -path \$computername\$directory -Filter *. py递归

我喜欢抑制错误,所以一个完整的例子看起来像这样: gci -path \Svr01\C$ -Include *.py -recurse -erroraction SilentlyContinue

于 2017-07-08T17:10:35.960 回答
0

我看不出任何人在任何时候都会得到这个工作。

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

gci -filter *.txt -recurse 仅从根目录返回 .txt 文件或不返回任何内容。似乎将 *.txt 过滤器应用于目录名称,因此看不到目录,因此根本不递归。

于 2018-04-20T12:31:57.810 回答