欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

ubuntu16.04(其他版本也可)批量修改图片名---shell编程

程序员文章站 2022-08-10 11:32:15
在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 

会出现一个对话框:
ubuntu16.04(其他版本也可)批量修改图片名---shell编程
从图片上的文字可以看出,使用dash可以整体提升系统的性能,所以最好不修改。如果你修改后,当然也可以用与上面同样的命令修改回来。(对于部分关键字如 let,bash支持,而sh和dash并不支持,对于部分关键字则选择使用bash。)