Я оказался в странной ситуации. У меня 35 папок. Первый называется 1, второй - 2 и так далее. В каждой из этих папок есть 4 файла. «1.png», «2.png», «3.png», «4.png». В каждой из этих папок я хочу запустить «convert * .png -append out.pdf» и переименовать каждый «out.pdf» после его исходного каталога (например, «out1.pdf» из первой папки), а затем распаковать каждый PDF из оригинальной папки. Это возможно? Я пробовал циклы, но все, что я пробовал, похоже, не соответствует системе имен.
1 ответ
0
Попробуйте что-то вроде этого:
#!/bin/sh
for dir in $(seq 1 35)
do
(
cd $dir || exit 1
rm -f out$dir.pdf
for n in 1 2 3 4
do
convert $n.png -append out$dir.pdf || exit 2
done
)
done
Этот скрипт совместим с posix и не требует bash
, следовательно, #!/bin/sh
.
Код между круглыми скобками выполняется в подоболочке, поэтому команда cd
изменяет каталог только до закрывающей круглой скобки. Следующая итерация цикла начнется в исходном рабочем каталоге.
В вашем примере, я думаю, что синтаксис для convert
неверен. Преобразование занимает только один входной файл, и в исходном вопросе *.png
пропустит четыре входных файла. Возможно, это часть вашей проблемы.