Powershell: filtro gci com saída compacta

0

Eu quero encontrar arquivos de forma recursiva, e para isso estou usando

> gci -name -filter *.py -r

A opção -name fornece apenas o nome do arquivo para obter uma linha por item, conforme necessário. Mas os itens que recebo como saída mostram apenas o caminho relativo, por exemplo,

python\scr.py

(o diretório atual é C:\python ) enquanto um comando similar em cmd.exe

> where /r . *.py

C:\data\python\scr.py

como desejado.

Existe alguma maneira de conseguir isso com gci ?

Eu gostaria de minimizar o piping / greping com regex / afins.

    
por sancho.s 18.12.2013 / 19:14

2 respostas

1

Não sei por que você é avesso ao piping, já que é sem dúvida o recurso mais importante do PowerShell, mas eu deixaria de fora o parâmetro -name . Em seguida, use Select-Object (alias, select ) para obter o FullName do objeto FileInfo e use a opção -expand para gerar apenas o valor da cadeia da propriedade FullName. Se você quiser mantê-lo curto, você também pode deixar de fora -filter e adicionar ' . ', já que o segundo parâmetro posicional é -Filter .

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

Ou use Foreach-Object (alias, % ou foreach ) e imprima o FullName.

gci . *.py -r| % {$_.FullName}
    
por 18.12.2013 / 23:03
0

Para evitar o uso de tubulação, você pode usar o seguinte:

(gci -filter *.py -recurse).FullName
    
por 19.12.2013 / 05:42