В Imagemagick для Linux, как мне сделать пакетное преобразование для каталога - PullRequest
1 голос
/ 19 августа 2010

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

Просто есть много конверсий, и у меня есть скрипт, который должен сортировать егодля меня.В настоящее время я пробовал

convert -resize 300x300 >  /media/usbdisk1/development/ephoto/richard/images/gallery/2007/29/normal/*.jpg /media/usbdisk1/development/ephoto/richard/images/gallery/2007/29/tn_med/$1.jpg

и

for i in $( ls /media/usbdisk1/development/ephoto/richard/images/gallery/2007/29/normal); do  /usr/convert resize 360x360 > /media/usbdisk1/development/ephoto/richard/images/gallery/2007/29/normal/$i  /media/usbdisk1/development/ephoto/richard/images/gallery/2007/29/tn_med/$i done;

Ответы [ 3 ]

1 голос
/ 19 августа 2010

Как указано в комментариях, вы можете использовать команду find:

outdir=/media/usbdisk1/development/ephoto/richard/images/gallery/2007/29/tn_med
cd /media/usbdisk1/development/ephoto/richard/images/gallery/2007/29/normal
find . -iname '*.jpg' -print0 | xargs -I{} -0 -r convert -resize 300x300 {} $outdir/{}

С помощью опции -print0 и xarg -0 это также обрабатывает имена файлов с пробелами и другими нечетными символами.

1 голос
/ 19 августа 2010
for i in $( ls /media/usbdisk1/development/ephoto/richard/images/gallery/2007/29/normal); do
    convert -resize 360x360 /media/usbdisk1/development/ephoto/richard/images/gallery/2007/29/normal/$i  /media/usbdisk1/development/ephoto/richard/images/gallery/2007/29/tn_med/$i;
done

понял!

0 голосов
/ 19 августа 2010

Нет причин повторять ваш длинный каталог три раза. Используйте переменную для базы. И не используйте ls:

base="/media/usbdisk1/development/ephoto/richard/images/gallery/2007/29"
for file in "$base/normal/*"
do
    convert -resize 360x360 "$file" "$base/tn_med/$(basename $file)"
done

Вместо basename вы можете сделать это следующим образом:

    convert -resize 360x360 "$file" "$base/tn_med/${file##*/}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...