Есть ли подстановочный знак для цифры в командной строке?
Например,
dir *.1*
Перечислит все файлы, чьи расширения начинаются с 1.
Есть ли подстановочный знак для цифры в командной строке?
Например,
dir *.1*
Перечислит все файлы, чьи расширения начинаются с 1.
Ответ на ваш буквальный вопрос «нет», но если ваш реальный вопрос:
Могу ли я как-то выбрать только файлы, содержащие цифры в их имени под cmd?
тогда, если это что-то основанное на NT (точнее, на W2k plus), да, это можно сделать.
Хитрость заключается в использовании findstr
, который поддерживает простые регулярные выражения, чтобы отфильтровать результаты.
dir /b |findstr /r "\.[0-9]"
даст вам результаты, подобные тем, что сделал бы dir
в вашем примере. Это означает, что он также вернет file.1st.second
(как и dir).
Небольшая проблема в том, что в нем будут перечислены только имена файлов, но даже это может быть решено:
for /f %F in ('dir /b ^|findstr /r "\.[0-9]"') do @echo %~ftzaF
напечатает ваш список в хорошо отформатированном стиле dir
. Обратите внимание, что он должен быть запущен в текущем каталоге!
ИЛИ (что я бы порекомендовал)
Если у вас есть powershell
(или вы хотите установить его), запустите его и выполните exec:
gi .\* |? {$_.name -match "\.[0-9]"}
Отредактировано согласно комментарию OP:
Это будет перечислять файлы, используя for /r
:
Самый простой, но очень медленный (практически непригодный для всего, кроме нескольких файлов), так как он запускает findstr
для каждой строки:
for /r "c:\temp" %F in (*) do @echo %~nxF | findstr /r "\.[0-9]" && echo %F
Более сложный, но быстрый (использует специально подготовленные строки, чтобы разрешить передачу по одному экземпляру findstr
:
for /f "tokens=2 delims=* eol=*" %F in ('^(for /r "directory_root" %F in ^(*^) do @echo %~nxF*%~dpnxF^) ^|findstr /r "\.[0-9].*\*"') do @echo %F
или (функционально то же самое, но легче для чтения:>)
(for /r "directory_root" %F in (*) do @echo %~nxF*%~dpnxF) | for /f "tokens=2 delims=* eol=*" %F in ('findstr /r "\.[0-9].*\*"') do @echo %F
Все примеры запускаются прямо из командной строки
Нет, MS-DOS поддерживает только два подстановочных знака (на основе CP/M). Они "*", обозначая любую последовательность символов, и "?", указывая на один символ. В подстановочных знаках нет различий между алфавитами и цифрами, а также отсутствует поддержка регулярных выражений, ограничивающих подстановочные знаки цифрами.