Так что я работал над этим некоторое время и думаю, что готов сдаться. Я пытался обработать подпапки с помощью imagemagick's montage
для создания контактных листов.
Это в основном так близко, как я получил:
find '/dir-with-spaces/' -type f -regex ".*\.\(JPG\|jpg\|jpeg\|JPEG\)" -print0 | \
while IFS= read -r -d Используя эту команду, Montage обрабатывает каждую картинку по отдельности. Я хочу, чтобы функция поиска выполняла поиск в нижнем каталоге изображений, создавала резервные копии, отправляла все это на montage
и затем продолжала переходить к следующей папке, получив в результате лист контактов с полным деревом папок.
т.е.:
/media/pictures/folder1/folder2/pic1.jpg...pic100.jpg --> media-pictures-folder1-folder2.jpg
Несколько других вещей, которые я пытался придумать:
#This just hangs montage forever
find . -name *.jpg -printf '%h\n' | sort -u | xargs -I {} montage {}/*
#I need a "+" here for -execdir, but I don't think I can use it with montage's argument structure.
find . -name *.jpg -execdir montage {} test.jpg \;
Структура каталогов выглядит примерно так:
folder1
folder1_1
folder1_2
folder1_3
*.jpg
folder2
folder2_1
*.jpg
folder3
folder3_1
folder3_2
folder3_4
folder3_5
*.jpg
Запуск Ubuntu 14.10
Любая помощь по этому вопросу будет принята с благодарностью.
\0' line;\
do \
montage "$line" "${line}".jpg; \
done
Используя эту команду, Montage обрабатывает каждую картинку по отдельности. Я хочу, чтобы функция поиска выполняла поиск в нижнем каталоге изображений, создавала резервные копии, отправляла все это на montage
и затем продолжала переходить к следующей папке, получив в результате лист контактов с полным деревом папок.
т.е.:
/media/pictures/folder1/folder2/pic1.jpg...pic100.jpg --> media-pictures-folder1-folder2.jpg
Несколько других вещей, которые я пытался придумать:
#This just hangs montage forever
find . -name *.jpg -printf '%h\n' | sort -u | xargs -I {} montage {}/*
#I need a "+" here for -execdir, but I don't think I can use it with montage's argument structure.
find . -name *.jpg -execdir montage {} test.jpg \;
Структура каталогов выглядит примерно так:
folder1
folder1_1
folder1_2
folder1_3
*.jpg
folder2
folder2_1
*.jpg
folder3
folder3_1
folder3_2
folder3_4
folder3_5
*.jpg
Запуск Ubuntu 14.10
Любая помощь по этому вопросу будет принята с благодарностью.
У меня была подобная проблема, но без папок на части имени файла. Рев является сценарием, которые делают то, что Вы спрашиваете. Изменение base
к Вашей стартовой папке. montage
опции использования -geometry
для установки размера мозаики в пкс В «widthВ» xВ «heightВ» и -tile
для количества мозаик В «columnsВ» xВ «linesВ».
#!/bin/bash -eu
base="/usr/share/icons/hicolor"
find "$base" -type d | while read fld
do
[ $fld == $base ] && continue
echo ">>> $fld"
aux="${fld//\//_}"
aux="${aux:1}"
find "$fld" -type f -maxdepth 1 -iregex ".*\.\(jpg\|jpeg\|gif\|svg\|png\)" > "/tmp/${aux}.txt"
if [ -s "/tmp/${aux}.txt" ]
then
montage "@/tmp/${aux}.txt" -geometry 64x -tile 3x "${aux}.jpg"
fi
rm "/tmp/${aux}.txt"
done