我陷入了一种奇怪的境地。我有 35 个文件夹。第一个文件夹名为 1,第二个文件夹名为 2,依此类推。每个文件夹中都有 4 个文件。'1.png'、'2.png'、'3.png'、'4.png'。在每个文件夹中,我希望运行“convert *.png -append out.pdf”,并根据其原始目录重命名每个“out.pdf”(例如第一个文件夹中的“out1.pdf”),然后从其原始文件夹中解压每个 pdf。这可能吗?我尝试过循环,但我尝试的所有方法似乎都与命名系统不一致。
答案1
尝试这样的操作:
#!/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
。
括号内的代码在子 shell 中运行,因此该cd
命令只会更改到右括号为止的目录。循环的下一次迭代将从原始工作目录中开始。
在您的示例中,我认为的语法convert
不正确。Convert 仅接受一个输入文件,而在您的原始问题中,*.png
将传递四个输入文件。也许这是您的问题的一部分。