Tentando encontrar qualquer arquivo de determinado padrão em um diretório e 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 é acrescentado após a letra r, feita por SVN.
O que estou fazendo errado?
windows
command-line
chz
fonte
fonte
Respostas:
Acabei de responder isso no Stack Overflow alguns dias atrás. /programming/15648679/find-text-string-or-part-of-text-with-dot-in-grepwin/15648872#15648872
No seu caso, seria semelhante a:
Atualizar
O * em um dos outros exemplos ".r [0-9] * $" também encontra registros que terminam em 'r', pois o quantificador * significa 0 ou mais.
fonte
Minha sugestão para você é fazer isso com
grep
- um utilitário para sistemas do tipo UNIX que foi portado para o Windows e pode corresponder a linhas usando expressões regulares.grep
está incluído no pacote MSYS do MinGW, o instalador pode ser encontrado aqui . (instale apenas o MSYS)Então você terá que adicionar ferramentas MSYS à sua variável PATH, o diretório dafeult para MSYS é
C:\MinGW\msys\1.0\bin
Finalmente, você pode fazer sua busca com este comando:
... o que significa: "obter saída de
ls -a
(lista de arquivos, incluindo arquivos ocultos) e passá-la paragrep
, corresponder linhas que se parecem com . .r [0-9] * (com pelo menos um caractere simbolizado por cada asterisco)".fonte
$ ls -R | grep -H ^.*[0-9]$ (standard input):res.jar.r469621 (standard input):res.jar.r464460 (standard input):test.jar.r46521 (standard input):test.jar.r46970
c:\pager\test.jar.r46521
em oposição a (entrada padrão): test.jar.r46521Você pode tentar isso:
Para obter ajuda, digite
findstr /?
.fonte
C:\Temp>findstr /S /B [0-9] . C:\Temp>findstr /S /B r[0-9]$ . C:\Temp>findstr /S /B $.*r[0-9]$ C:\Temp>findstr /S /B $.*r*$ C:\Temp>findstr /S /B $.*r..*$ C:\Temp>findstr /S /B $.*r\..*$ C:\Temp>findstr /S /B /R $.*r\..*$ C:\Temp>findstr /S /B /R "$.*\..r[0-9]*$ C:\Temp>findstr /S /B /R "$.*\..r[0-9]*$" C:\Temp>findstr /S /B /R "$.*\..r[0-9]*$" . C:\Temp>findstr /S /B /R "$.*\..r[0-9]$" . C:\Temp>findstr /S /B /R "$.*[0-9]*" . C:\Temp>findstr /S /B /R "$*[0-9]*" .
C:\Temp>dir /aa| findstr .r[0-9]*$
C:\Temp>dir /aa | findstr .r[0-9]*$ File Not Found
dir /aa| findstr .r[0-9]*$
. Isso funciona aqui ...