Вы можете использовать find
, чтобы выбрать именно те файлы, которые вам нужны, а затем передать их в цикл while
, используя подстановку процесса:
#!/bin/bash
while read filename ; do
echo "$filename" # your code here
done < <( find . -name '*.jpg' -and -not -regex '.*-[0-9]+x[0-9]+\.jpg' )
Этот код использует -name
для выбора всех .jpg
изображений и -regex
для исключения изображений с шаблоном -<number>x<number>
(регулярное выражение должно быть написано так, чтобы оно соответствовало всему имени файла).
Если ваш код должен защищать от экзотических имен файлов даже с помощью новой строки, вы должны использовать переключатель -print0
с find
и переключатель -d $'\0'
с read
.