В цикле:
shopt -s nullglob
files=()
for number in "${clipnumbers[@]}"; do
printf -v pattern 'clip%s-*.png' "$number"
files+=( $pattern )
done
Это повторяет числа и создает для каждого шаблон подстановки имени файла. Шаблон расширяется, чтобы добавить имена файлов, соответствующие ему, в массив files
. Параметр оболочки nullglob
заставляет не -совпадающие шаблоны расширяться до нуля (, а не оставаться нерасширенными ).
Использованиеfind
(для рекурсии во все каталоги ниже текущего каталога и для выполнения некоторых действий с каждым найденным файлом):
patterns=()
for number in "${clipnumbers[@]}"; do
printf -v pattern 'clip%s-*.png' "$number"
patterns+=( -o -name "$pattern" )
done
find. -type f \( "${patterns[@]:1}" \) -exec action-to-perform-on-files {} \;
:1
удаляет начальный -o
из списка в patterns
в расширении.
Это сочетает в себе поиск файлов с выполнением над ними некоторых действий. Это потерпит неудачу, если ваш clipnumbers
массив содержит много тысяч чисел, (список аргументов станет слишком длинным ).