解压缩子目录中的所有文件,并在原始目录[关闭]后重命名它们


0

我结束了一个奇怪的情况。我有35个文件夹。第一个命名为1,第二个命名为2,依此类推。在每个文件夹中,有4个文件。 '1.png','2.png','3. png','4.png'。在每个文件夹中,我希望运行“convert * .png -append out.pdf”,并在其原始目录(例如第一个文件夹中的“out1.pdf”)之后重命名每个“out.pdf”,然后解压每个pdf来自其原始文件夹。这可能吗?我试过循环,但我尝试的所有东西似乎都不同意命名系统。


1
你是什​​么意思“从原始文件夹中解压每个pdf”?
RobertL

1
到目前为止,向我们展示您的代码,以及它出错的地方。
tripleee

Answers:


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

括号内的代码在子shell中运行,所以 cd 命令仅更改目录,直到右括号。循环的下一次迭代将在原始工作目录中开始。

在你的例子中,我认为的语法 convert 是不正确的。转换只接受一个输入文件,并在您的原始问题中 *.png 会传递四个输入文件。也许这是你问题的一部分。


缺乏报价是 符合POSIX(或兼容Bash)。尝试 shellcheck.net 诊断简单的shell反模式和语法错误。
tripleee

我用“* .png”替换'$ n.png'后立即工作。
J. Mini
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.