Знайти назви файлів з певним малюнком у командному рядку Windows?


11

Спроба знайти будь-які файли певного шаблону в каталозі та його підкаталогах. Я намагався:

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

в надії знайти такі файли, як

abc.txt.r12222
tjy.java.r9994

Там, де після букви r додається число, зроблене SVN.

Що я роблю неправильно?


3
Ласкаво просимо до SU! На сайтах stackexchange, коли відповідь допомогла вам, спосіб подякувати людям - це підтвердити їх відповідь та прийняти її (натиснувши на галочку зліва від відповіді), якщо вона вирішила вашу проблему. Я кажу лише тому, що, здається, ви не прийняли жодної з відповідей, які ви отримали на свої запитання.
тердон

Відповіді:


10

Я щойно відповів на це в Stack Overflow пару днів тому. /programming/15648679/find-text-string-or-part-of-text-with-dot-in-grepwin/15648872#15648872

У вашому випадку це виглядатиме так:

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

Оновлення

* В одному з інших прикладів ".r [0-9] * $" також знаходить записи, які закінчуються на "r", оскільки кількісний показник * означає 0 або більше.


Привіт cpattersonv1 - дякую за відповідь dir * / s / b | findstr \ .r [0-9] * $ працює
чц

здається, що findstr не розпізнає символ 1 або багато символів "+"
Скотт Чу

@ScottChu почніть нове запитання із прикладу. (Я відповів на це 5 років тому.)
AbsoluteƵERØ

0

Я пропоную вам це зробити grep- утиліта для UNIX-подібних систем, перенесена в Windows і може відповідати лініям, використовуючи регулярні вирази.

grepвходить до пакету MSYS MinGW, інсталятора можна знайти тут . (встановити лише MSYS)

Тоді вам доведеться додати інструменти MSYS до вашої змінної PATH, каталог dafeult для MSYS є C:\MinGW\msys\1.0\bin

Нарешті, ви можете виконати свій серач за допомогою цієї команди:

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

... що означає: «отримати висновок ls -a(файл лістингу , включаючи приховані файли) і передати його grep, сірникові лінії , які виглядають як . .R [0-9] * (принаймні один символ символізував кожну зірочку)».


привіт gronostaj дякую за відповідь; Я спробував$ 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
chz

лс | grep - це те саме, що і dir | findstr в Windows.
АбсолютƵERØ

0

Ви можете спробувати це:

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

Для довідки введіть findstr /?.


Привіт mfm4aa дякую за відповідь - не можу, здається, працювати; Я спробував усі комбінації, і жодна не дає відповіді, яка перераховує мурашки: Напр. InlineC:\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]*" .
chz

Будь ласка, спробуйте:C:\Temp>dir /aa| findstr .r[0-9]*$
Ендоро

Привіт mfm спасибі за написання - я все ще не можу знайтиC:\Temp>dir /aa | findstr .r[0-9]*$ File Not Found
chz

:) просто наберіть dir /aa| findstr .r[0-9]*$. Це працює тут ...
Ендоро

Привіт Ендоро, дякую за відгук. Це не спрацювало - він пише, що Файл не знайдено
chz
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.