Я бы попробовал использовать этот подход:
- вычислить наилучшее регулярное выражение, которое точно соответствует файлам, которые вы хотите
- используйте его в качестве аргумента
find
, чтобы сначала найти файлычтобы изменить - , затем выполнить итерацию по списку файлов и вызвать
mogrify
Пример скелета будет выглядеть так:
files=$( find -regexp "$pattern" )
for file in "$files"; do
mogrify "$file" ;
done
Или даже короче с find -exec
:
# Note: not tested, valid mogrify arguments must be added/handled
# call mogrify for each 'find' results
find -regexp "$pattern" -exec mogrify {} +;
# call mogrify in a subshell for each 'find' results, for finest argument handling
find -regexp "$pattern" -exec sh -c 'mogrify "$@"' {} +;
Где вам нужно будет «поиграть с передачей аргументов и порядком», чтобы заставить команду работать.
Примечание1: этот ответ не о том, «какой лучший шаблон соответствует»Ваш вопрос "вопрос, но о более общем подходе" поиска пользовательских файлов и выполнения команды для них "
Примечание 2: мой ответ не содержит проверенных и проверенных команд, но вместо этого используется подход, использующий find
и find -exec
.
(конструктивные) отзывы приветствуются.