Использование регулярных выражений или что-то еще для поиска расширения файла - PullRequest
1 голос
/ 13 октября 2011

Мне нужно создать bash-скрипт, который будет искать в заданном каталоге определенные расширения файлов.Расширения файлов имеют вид .210 .110 .311 .211 и так далее.Я не могу сделать просто " .2 , потому что есть имена файлов, которые имеют это в имени. Есть ли способ установить буфер после" .2", чтобы расширениетолько 3 символа в длину? Это удалит все неправильные результаты поиска.

Прямо сейчас я использую find /cygdrive/x/Clients -name '*.210'

Спасибо!

Ответы [ 3 ]

3 голосов
/ 13 октября 2011

Вы должны быть в состоянии использовать подстановочные знаки. Для всех файлов с 3-значным числовым расширением должно хватить следующего:

ls *.[0-9][0-9][0-9] 

Если вы хотите, чтобы добавочные номера начинались с номера 2, попробуйте следующее:

ls *.2[0-9][0-9]
2 голосов
/ 13 октября 2011

Если я правильно прочитал ваш вопрос, вам просто нужно запустить в целевой директории следующее:

printf '%s\n' *.[0-9][0-9][0-9]

Вывод не будет включать точечные файлы . Если вы хотите их, вы можете включить опцию dotglob * bash *. Было бы безопаснее также включить параметр nullglob (см. Комментарии @c00kiemon5ter ниже).

1 голос
/ 13 октября 2011

вы можете использовать регулярные выражения, если вы перенаправляете в grep

find /cygdrive/x/Clients | grep "\.2\d\d$"

, но это намного медленнее, чем использование подстановочных знаков, как упомянуто Kurt S

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...