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来改变,但对我来说有点热。
你能帮助我吗?
你可以这样开始:
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来做真正的文件重命名。您可以添加-n到mv以避免意外覆盖现有文件。