for 循环中的字符串编辑

for 循环中的字符串编辑

下面的代码裁剪空白 pdf 图像边框。下面示例的输出文件在扩展名“.pdf”之前包含尾部“_cropped”。对字符串建立索引可能是去除尾部的一个很好的解决方案。URL 提供了索引的说明。我不知道如何将相应的文件名分配给变量并通过<old-name> <new-name>.任何帮助表示赞赏。 :)

for f in *; do
    pdf-crop-margins -v -p 0 -a -6 "$(basename $f .pdf).pdf";
done

答案1

在 bash 中替换是相当有效的:

v="file_cropped.pdf"
# file_cropped.pdf

echo ${v%_cropp*}.pdf
# file.pdf

答案2

输入$fexample_cropped.pdf,输出:example.pdf

  • 选项 1,您的basename方法:

    echo $(basename "$f" _cropped.pdf).pdf
    
  • 选项 2,sed

    sed 's/_cropped//' <<< "$f"
    
  • 选项 3, rename- 应用于文件而不是字符串。将直接重命名文件,用于-n试运行:

    rename 's/_cropped//' "$f"
    

rename也可以一次性应用于多个文件,也许这就是您真正需要的。

相关内容