Мне нужно создать bash-скрипт, который будет искать в заданном каталоге определенные расширения файлов.Расширения файлов имеют вид .210 .110 .311 .211 и так далее.Я не могу сделать просто " .2 , потому что есть имена файлов, которые имеют это в имени. Есть ли способ установить буфер после" .2", чтобы расширениетолько 3 символа в длину? Это удалит все неправильные результаты поиска.
Прямо сейчас я использую find /cygdrive/x/Clients -name '*.210'
find /cygdrive/x/Clients -name '*.210'
Спасибо!
Вы должны быть в состоянии использовать подстановочные знаки. Для всех файлов с 3-значным числовым расширением должно хватить следующего:
ls *.[0-9][0-9][0-9]
Если вы хотите, чтобы добавочные номера начинались с номера 2, попробуйте следующее:
2
ls *.2[0-9][0-9]
Если я правильно прочитал ваш вопрос, вам просто нужно запустить в целевой директории следующее:
printf '%s\n' *.[0-9][0-9][0-9]
Вывод не будет включать точечные файлы . Если вы хотите их, вы можете включить опцию dotglob * bash *. Было бы безопаснее также включить параметр nullglob (см. Комментарии @c00kiemon5ter ниже).
вы можете использовать регулярные выражения, если вы перенаправляете в grep
find /cygdrive/x/Clients | grep "\.2\d\d$"
, но это намного медленнее, чем использование подстановочных знаков, как упомянуто Kurt S