![Возникли проблемы с командой `convert`, когда в месте назначения отсутствуют подкаталоги](https://rvso.com/image/747352/%D0%92%D0%BE%D0%B7%D0%BD%D0%B8%D0%BA%D0%BB%D0%B8%20%D0%BF%D1%80%D0%BE%D0%B1%D0%BB%D0%B5%D0%BC%D1%8B%20%D1%81%20%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%BE%D0%B9%20%60convert%60%2C%20%D0%BA%D0%BE%D0%B3%D0%B4%D0%B0%20%D0%B2%20%D0%BC%D0%B5%D1%81%D1%82%D0%B5%20%D0%BD%D0%B0%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D1%8F%20%D0%BE%D1%82%D1%81%D1%83%D1%82%D1%81%D1%82%D0%B2%D1%83%D1%8E%D1%82%20%D0%BF%D0%BE%D0%B4%D0%BA%D0%B0%D1%82%D0%B0%D0%BB%D0%BE%D0%B3%D0%B8.png)
У меня есть каталог, который называется src
полный подкаталогов и других изображений. Я попытался использовать один оператор bash, чтобы автоматически изменить их размер в другой целевой каталог, который называется thumb
так:
find ./src -type f -follow -iname '*.jp*g' -exec convert -resize 150x150x "{}" "./thumb/${size}/{}" \;
Это не сработало, поскольку thumb
каталог изначально пуст и не имеет такой же структуры каталогов, как src
.
Я пытался поискать, man convert
но не могу найти опцию автоматического создания каталогов на convert
. Какой эффективный способ конвертировать все мои изображения в размер миниатюры в thumb
каталоге? Нужно ли мне предварительно создавать все подкаталоги в thumb?
РЕДАКТИРОВАТЬ
Я предварил команду выше следующим образом:
find ./src -type d -follow -exec mkdir -p "thumb/${size}/{}" \;
Но мне интересно, смогу ли я сделать все это одной командой вместо двух?
решение1
Философия UNIX заключается в том, чтобы иметь команды, которые делают одну и только одну вещь. Команды, которые могут записывать в файл вместостандартный выводуже расширяют это правило.
Сможете ли вы сделать все в одной команде, зависит от вашего определения. Делает ли это:
find ./src -type f -follow -iname '*.jp*g' -exec /bin/sh -c \
'mkdir -p `dirname "thumb/'${size}'/{}"` &&'\
'convert -resize 150x150x "{}" "./thumb/'${size}'/{}' \;
считаются одной командой или несколькими: find
, sh
, mkdir
, dirname
, convert
? Разрывы строк предназначены только для«читабельность».