ubuntu16.04(其他版本也可)批量修改图片名---shell编程
程序员文章站
2022-04-29 12:09:41
在windows系统中有很多好用的图片排序软件,可以批量的进行图片排序。然而在ubuntu中,图片排序只能自己写一个shell脚本,编写shell代码。下面是具体的操作步骤。(1)、新建一个rename.sh文件(这个名字可以随便起但是后缀必须是.sh,而且一般放在与图片集所在的目录下),之后在文件 ......
在windows系统中有很多好用的图片排序软件,可以批量的进行图片排序。然而在ubuntu中,图片排序只能自己写一个shell脚本,编写shell代码。下面是具体的操作步骤。
(1)、新建一个rename.sh文件(这个名字可以随便起但是后缀必须是.sh,而且一般放在与图片集所在的目录下),之后在文件的内部写入如下代码(代码中已经标注每条代码的含义):
#!test-folder/bash 告诉这个文件是shell脚本 #mkdir images(你可以像这样的建立一个文件夹 之后用cp指令将修改后的图片放到这个文件夹中) #输出本文件的说明 echo "this script is to rename picture" #设置图片开始的顺序变量 (我想让图片的名字从70884开始排序) i=70884 #names是一个准备更改的图片集的索引(可以设置成任意值),./name49/* 表示names49文件夹下的所有图片(可以改为自己的图片集的位置) for names in ./names49/* do #输出图片名字names是一个变量 $names 表示引用这个变量的内容 echo $names #变量赋值,news是一个新的变量 news=$i echo "$news" #更改(如果将mv 变为cp的话就是将更名字后的图片复制到指定的目录下)当前的图片 到指定的目录下,并且命名为自己想要的名字$news.jpg mv $names ./names49/$news.jpg let i=i+1 done
(2)、整体代码以及执行命令如下(方便查看对照更改):
整体代码:
#!test-folder/bash echo "this script is to rename picture" i=70884 for names in ./names49/* do echo $names news=$i echo "$news" mv $names ./names49/$news.jpg let i=i+1 done
在当前目录中打开终端,执行命令:
sudo sh ./rename.sh
注意:在运行该脚本时可能会提示 let:not found 因为上面代码中出现了let这个指令。而sh指令默认是dash 而dash不支持let命令,所以要显示的用bash 这个命令
更改为:
sudo bash rename.sh
如果仍然想要用sudo sh ./rename.sh 那么必须要修改/bin/sh 指向bash.可以执行下面的命令:
sudo dpkg-reconfigure dash
会出现一个对话框:
从图片上的文字可以看出,使用dash可以整体提升系统的性能,所以最好不修改。如果你修改后,当然也可以用与上面同样的命令修改回来。(对于部分关键字如 let,bash支持,而sh和dash并不支持,对于部分关键字则选择使用bash。)