Powershell:具有紧凑输出的 gci 过滤器

Powershell:具有紧凑输出的 gci 过滤器

我想递归查找文件,为此我使用

> gci -name -filter *.py -r

选项-name仅提供文件名,以便根据需要为找到的每个项目获取一行。但我得到的输出项目仅显示相对路径,例如

python\scr.py

(当前目录是C:\python),而类似的命令cmd.exe

> where /r . *.py

给出

C:\data\python\scr.py

如所希望的。

有没有什么办法可以得到这个gci

我想尽量减少使用正则表达式或类似物的管道/greping。

答案1

我不确定您为什么不喜欢管道,因为它可以说是 PowerShell 最重要的功能,但我会省略该 -name参数。然后,使用Select-Object(alias, select) 获取 FileInfo 对象的 FullName,并使用开关-expand仅输出 FullName 属性的字符串值。如果要保持简短,也可以省略-filter并添加“ .”,因为第二个位置参数是-Filter

gci . *.py -r| select -exp fullname

或者使用Foreach-Object(别名,%foreach),并输出全名。

gci . *.py -r| % {$_.FullName}

答案2

为了避免使用管道,您可以使用以下命令:

(gci -filter *.py -recurse).FullName

相关内容