Por que qualquer um deles retornaria três itens:
gci C:\tools\* -filter b*.jar -recurse |select fullname
gci C:\tools\b* -filter b*.jar -recurse |select fullname
gci C:\tools\briss-* -filter b*.jar -recurse |select fullname
gci C:\tools\briss-2* -filter b*.jar -recurse |select fullname
gci C:\tools\briss-2.* -filter b*.jar -recurse |select fullname
gci C:\tools\briss-2.0* -filter b*.jar -recurse |select fullname
FullName
--------
C:\tools\Briss-2.0\lib\bcmail-jdk15-1.46.jar
C:\tools\Briss-2.0\lib\bcprov-jdk15-1.46.jar
C:\tools\Briss-2.0\lib\Briss-2.0.jar
mas qualquer um deles retorna apenas um:
gci C:\tools\br* -filter b*.jar -recurse | select fullname
gci C:\tools\bri* -filter b*.jar -recurse | select fullname
gci C:\tools\bris* -filter b*.jar -recurse | select fullname
gci C:\tools\briss* -filter b*.jar -recurse | select fullname
FullName
--------
C:\tools\Briss-2.0\lib\Briss-2.0.jar
Achei que sabia alguma coisa sobre o PowerShell, mas isso não faz sentido.
Editar
Admito uma presunção: removi uma seção do caminho na minha colagem acima para torná-lo mais curto. Não vejo razão para que isso faça diferença. Aqui está uma captura de tela do efeito real:
Nota: Eu não redigitei o primeiro comando gci, apenas o relembrei e adicionei o "r" no caminho. Além disso, o caminho não está digitado errado porque usei a conclusão de tabulação.
Eu estava testando algo para incluir em um script, mas isso não faz parte de um script. Notei isso no Win11, mas repeti em uma VM Win10 limpa. Se você usar o Chocolatey e instalar o Briss, deverá obter exatamente a mesma estrutura de pastas para testar isso você mesmo.
Isso está relacionado a um antigo "recurso" do NT em que o caminho de entrada é automaticamente (e talvez inesperadamente) dividido em
[drive:][path][filename]
certos casos.Por exemplo, você pode tentar executar
gci c:\tools\briss-2.0.jar -Recurse
no PowerShell, o que seria de se esperar que desse erro (ou no cmddir /s c:\tools\briss-2.0.jar
:).No entanto, ambos ainda retornarão o mesmo arquivo único, porque o caminho foi dividido em
[c:][\tools\][briss-2.0.jar]
. O provedor do sistema de arquivos pesquisac:\tools\
recursivamente e, em seguida, aplica o filtro de nome de arquivo depois, que corresponde apenas abriss-2.0.jar
.Dito isso, isso não deve acontecer para os comandos exatos da sua pergunta. Existem alguns requisitos extras para fazer o powershell voltar a esse método, como digitar um pouco errado o nome da pasta: