将 pdf 转换为 jpg 保持相同的名称;调整大小并创建拇指然后重命名?

Rap*_*aël 2 bash imagemagick image-manipulation

我有很多pdf文件(3308),我必须应用四个步骤:

1)我必须全部转换为 jpg

我在网上用 ImageMagick 发现了这个小脚本:batch convert pdf to jpg

我想这样做,但我的文件名与以前相同:foo.pdf=>foo.jpg 另外,我希望所有图像都保存在“场景”中的文件夹中

2) 然后我必须调整到 612x792

3) 然后我必须创建 255x330 的缩略图

4)最后我必须重命名它们。确实,我有一个csv文件,里面有他们的名字和新名字

这是一些行的示例。
每一行对应于“实际名称”文件的“逗号”“新名称”。有 3308 行,每个文件一行

current_name,new_name
foo,bar
PS130_1060,55-large
Run Code Online (Sandbox Code Playgroud)

如您所见,没有显示扩展名,因为这两个文件是jpg格式。

我完全迷失了,我不知道是使用4个脚本还是一个脚本可能。我经常用PHP工作,但我想做一些bash来改变,但对我来说有点热。

你能帮助我吗?

max*_*zig 5

你可以这样开始:

for i in "$@"; do
  dst="${i%pdf}jpg"
  convert "$i" -resize 612x792 "$dst"
  convert "$i" -resize 255x330 "${i%.pdf}_thump.jpg"
done
Run Code Online (Sandbox Code Playgroud)

并称之为

$ bash my_script.sh *.pdf
Run Code Online (Sandbox Code Playgroud)

对于重命名,您可以使用另一个脚本。我不明白您的示例 .csv 文件。是否包含 3 个文件的 3 行?好的,情况就是这样。

您可以使用以下命令行重命名文件:

$ awk -F, '{ system("echo mv \"" $1 "\" \"" $2 "\"")  }' myrename.csv
Run Code Online (Sandbox Code Playgroud)

awkecho ...对每一行执行命令,$1是一行的第一个字段$2的值,是第二个字段的值。\"如果文件名包含空格,则需要引用。-F,告诉awk使用逗号作为字段分隔符。

如果你已经测试过这个命令,你可以删除echo来做真正的文件重命名。您可以添加-nmv以避免意外覆盖现有文件。