Próba znalezienia plików o określonym wzorze w katalogu i jego podkatalogach. Próbowałem:
C:\test\workspace>dir *.*.r[0-9]* /s /b
File Not Found
w nadziei na znalezienie plików takich jak
abc.txt.r12222
tjy.java.r9994
Gdzie liczba jest dodawana po literze r, przez SVN.
Co ja robię źle?
Odpowiedzi:
Właśnie odpowiedziałem na to na przepełnieniu stosu kilka dni temu. /programming/15648679/find-text-string-or-part-of-text-with-dot-in-grepwin/15648872#15648872
W twoim przypadku wyglądałoby to tak:
Aktualizacja
Znak * w jednym z pozostałych przykładów „.r [0-9] * $” również znajduje rekordy, które kończą się na „r”, ponieważ * kwantyfikator oznacza 0 lub więcej.
źródło
Moją propozycją jest zrobienie tego za pomocą
grep
- narzędzia dla systemów typu UNIX, które zostało przeniesione do systemu Windows i może dopasowywać wiersze za pomocą wyrażeń regularnych.grep
jest dołączony do pakietu MSYS MinGW, instalator można znaleźć tutaj . (zainstaluj tylko MSYS)Następnie musisz dodać narzędzia MSYS do zmiennej PATH, niebezpiecznym katalogiem dla MSYS jest
C:\MinGW\msys\1.0\bin
Wreszcie możesz wykonać wyszukiwanie za pomocą tego polecenia:
... co oznacza: „pobierz dane wyjściowe
ls -a
(lista plików łącznie z ukrytymi plikami) i przekaż je dogrep
, dopasuj linie wyglądające jak . .r [0-9] * (z co najmniej jednym znakiem symbolizowanym przez każdą gwiazdkę)”.źródło
$ 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
w przeciwieństwie do (standardowe wejście): test.jar.r46521Możesz spróbować:
Aby uzyskać pomoc, wpisz
findstr /?
.źródło
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]*$
. To działa tutaj ...