Проблема в одинарных кавычках. Переменные не расширяются в одинарных кавычках (от man bash
:
Заключение символов в одинарные кавычки сохраняет литеральное значение каждого символа в кавычках.
Если вы хотите использовать переменную, вам понадобятся двойные кавычки. Чтобы проиллюстрировать:
$ foo="bar"
$ echo '$foo'
$foo
$ echo "$foo"
bar
Итак, в вашем случае вы хотите что-то вроде:
for i in $( find -E . -iregex ".*\.$varExtension") ; do
Или, лучше, поскольку вышеуказанное не может иметь дело со странными именами файлов:
find -E . -iregex ".*\.$varExtension" -print0 | while IFS= read -r -d '' i; do
Или забудьте цикл и заведите find
сделать все, что за вас стоит:
find -E . -iregex ".*\.$varExtension" -exec something {} \;
Насколько я понимаю, вы можете указывать только файлы, которые заканчиваются определенным шаблоном, например *. Jpg = 01; 31
, чтобы сделать jpg-файлы красными. Тогда, конечно, вы всегда можете обмануть его примерно так * IMG_20150808_202948.jpg = 01; 31
:)
Согласившись с @nsg, что вы не можете этого сделать, кажется, что документация отсутствует. Итак, вы можете прочитать исходный код для ls
в print_color_indicator , в частности, в том месте, где он проверяет суффикс файла , комментируя
/* Check the file's suffix only if still classified as C_FILE. */
Итак, нет : вы не можете обмануть его, создав имя каталога, заканчивающееся на ". jpg"
. Вы можете применять суффиксы только к именам файлов (и видеть код), суффикс не обязательно должен начинаться с "."
.