Localiza nomes de arquivos com determinado padrão na linha de comando do Windows?

8

Tentando encontrar algum arquivo de determinado padrão em um diretório e em seus subdiretórios. Eu tentei:

C:\test\workspace>dir *.*.r[0-9]* /s /b
File Not Found

na esperança de encontrar arquivos como

abc.txt.r12222
tjy.java.r9994

Onde um número é anexado após a letra r, feito pelo SVN.

O que estou fazendo de errado?

    
por chz 24.03.2013 / 15:27

3 respostas

8

Acabei de responder isso no Stack Overflow há alguns dias. link

No seu caso, seria parecido com:

dir * /s/b | findstr \.r[0-9]+$

Atualizar

O * em um dos outros exemplos ".r [0-9] * $" também encontra registros que terminam em 'r' porque o * quantificador significa 0 ou mais.

    
por 28.03.2013 / 22:39
0

Minha sugestão para você é fazer isso com grep - um utilitário para sistemas semelhantes ao UNIX que foi portado para o Windows e pode corresponder linhas usando expressões regulares.

grep está incluído no pacote MSYS do MinGW, o instalador pode ser encontrado aqui . (instale apenas MSYS)

Então você terá que adicionar ferramentas MSYS à sua variável PATH, o diretório dafeult para MSYS é C:\MinGW\msys.0\bin

Finalmente, você pode fazer o seu serach com este comando:

ls -a | grep ^.+\..+\.r[0-9]+$

... o que significa: "obter saída de ls -a (lista de arquivos incluindo arquivos ocultos) e passá-la para grep , corresponder linhas semelhantes a . .r [0-9 ] * (com pelo menos um caracter simbolizado por cada asterisco) ".

    
por 24.03.2013 / 16:01
0

Você pode tentar isso:

dir /a| findstr .r[0-9]*$

Para obter ajuda, digite findstr /? .

    
por 24.03.2013 / 19:42