@OP,
Чи використовується glob pettern не лише для імен файлів?
Ні, шаблон "glob" використовується не лише для імен файлів. Ви також використовуєте його для порівняння рядків. У своїх прикладах ви можете використовувати case / esac для пошуку шаблонів рядків.
gg=svm-grid-ch
case "$gg" in
*grid* ) echo "found";;
esac
case "$gg" in ????grid*) echo "found";; esac
case "$gg" in s???grid*) echo "found";; esac
У bash, коли використовувати шаблон glob, а коли регулярний вираз? Дякую!
Regex є більш універсальним і "зручним", ніж "шаблони глобусів", однак якщо ви не виконуєте складних завдань, які "глобінг / розширений глобінг" не може забезпечити легко, тоді немає необхідності використовувати регулярний вираз. Regex не підтримуються для версії bash <3.2 (як згадував Деніс), але ви все одно можете використовувати розширений глобінг (за допомогою налаштування extglob). для розширеного глобінгу дивіться тут і кілька простих прикладів тут .
Оновлення для OP: Приклад пошуку файлів, які починаються з 2 символів (крапки "." Означає 1 символ), а потім "g" за допомогою регулярного виразу
наприклад вихід
$ shopt -s dotglob
$ ls -1 *
abg
degree
..g
$ for file in *; do [[ $file =~ "..g" ]] && echo $file ; done
abg
degree
..g
У наведеному вище файли узгоджуються, оскільки їхні імена містять 2 символи, за якими йде "g". (тобто..g ).
Еквівалент глобінгу буде приблизно таким: (дивіться посилання на значення ?і *)
$ for file in ??g*; do echo $file; done
abg
degree
..g