解压子目录中的所有文件并根据原始目录重命名

解压子目录中的所有文件并根据原始目录重命名

我陷入了一种奇怪的境地。我有 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将传递四个输入文件。也许这是您的问题的一部分。

相关内容