Попытка найти любые файлы определенного шаблона в каталоге и его подкаталогах. Я старался:
C:\test\workspace>dir *.*.r[0-9]* /s /b
File Not Found
в надежде найти файлы типа
abc.txt.r12222
tjy.java.r9994
Где число добавляется после буквы r, сделано SVN.
Что я делаю неправильно?
Ответы:
Я только что ответил на это на Stack Overflow пару дней назад. /programming/15648679/find-text-string-or-part-of-text-with-dot-in-grepwin/15648872#15648872
В вашем случае это будет выглядеть так:
Обновить
Символ * в одном из других примеров ".r [0-9] * $" также находит записи, заканчивающиеся на 'r', поскольку квантификатор * означает 0 или более.
источник
Я предлагаю вам сделать это с
grep
помощью утилиты для UNIX-подобных систем, которая была перенесена в Windows и может сопоставлять строки с помощью регулярных выражений.grep
входит в комплект MSYS MinGW, установщик можно найти здесь . (установить только MSYS)Затем вам нужно будет добавить инструменты MSYS в переменную PATH, каталог по умолчанию для MSYS:
C:\MinGW\msys\1.0\bin
Наконец, вы можете выполнить поиск с помощью этой команды:
... что означает: "получить вывод из
ls -a
(список файлов, включая скрытые файлы) и передать егоgrep
, сопоставить строки, которые выглядят как . .r [0-9] * (хотя бы одна звездочка обозначена каждой звездочкой)".источник
$ 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
в отличие от (стандартный ввод): test.jar.r46521Вы можете попробовать это:
Для справки введите
findstr /?
.источник
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]*$
. Это работает здесь ...