Выполнить команду рекурсивно через подкаталоги

Я пытаюсь преобразовать кучу изображений в миниатюры, которые могут быть в нескольких подкаталогах, и сохранить копию изображения в виде миниатюры внутри подкаталога, но я не могу понять синтаксис. Любой совет приветствуется.

convert test/*/*.jpg -50x50 test/*/*_thumb.jpg
1
задан 29 March 2017 в 16:25

1 ответ

Также должен выполняться цикл оболочки:

for file in test/*/*.jpg ; do
    new=${file%.jpg}_thumb.jpg 
    convert "$file" -resize 50x50 "$new"
done

Или с Bash globstar, что лучше, если файлы могут быть на произвольных уровнях каталогов:

shopt -s globstar
for file in test/**/*.jpg ; do ...

${file%.jpg} принимает значение переменной file и удаляет строку .jpg с конца. (см. BashGuide о разложениях параметров)

2
ответ дан 23 May 2018 в 00:09
  • 1
    +1, потому что первый пример более читабельен, чем принятый ответ с find и иероглификой. – WinEunuuchs2Unix 17 May 2018 в 05:00

Другие вопросы по тегам:

Похожие вопросы: