shell脚本批量重命名文件

首先我的资源文件名称如下:

Manual Book Vandroid S5i(1219)_页面_01.jpg

Manual Book Vandroid S5i(1219)_页面_02.jpg

Manual Book Vandroid S5i(1219)_页面_03.jpg

                                 。。。

其中这种文件有很多。

目标格式是:Manual_01.jpg,然后在网上找了相关的文档,发现有这方面的东西,经过最终的尝试,linux下的bash脚本写成如下:

for file in Manual*;do mv "$file" "${file/ Book\ Vandroid\ S5i(1219)_页面 /}"; done

可以成功的运行。

有几个注意点:

        A.如果字符串中有空格,请用‘\ ’代替(不包含单引号),

下面来解析一下这个脚本。

for file in Manual*;-------------for表示一个循环,例如java或C语言中的for关键字,’Manual*‘表示文件夹下文件名称以字符‘Manual’开头的所有文件,循环给file 变量赋值。

mv----表示一个命令,详细信息自己$man -mv;

“$file” 表示取变量file所指向的文件,${file/oldstring/newstring},oldstring表示将要替换的字符串,newstring表示用了替换的字符串,这里我们为空(无字符)。

 

最后其它网站有#%的使用,但现在还未明白,如果你知道,可以回复一下,先谢谢!

 

2013.12.31

现在还遇到一个问题,就是文件的名称都是数字,而且有规律的异常递增,比如:21.jpg,22.jpg,23.jpg。。。35.jpg

当然我们需要的目标文件是1.jpg,2.jpg,3.jpg.....15.jpg

所以我们将这些名称减去20就可以了,但是、但是,这个名称是一个字符串,所以不能这么直接减,得去将字符串转换为数字。

      嗯,以上是一个思路。这个工作量应该非常复杂,等你吧这个东西实现将是在2014年的夏天。但是如果我们只命名一个文件的命令是:

                         mv 21.jpg 1.jpg

       那么我们能否通过其他的方法批量生产这种有规律的命令呢?有!通过excel来完成。

       

mv 46 .jpg 1.jpg mv 46.jpg 1.jpg
mv 47 .jpg 2.jpg mv 47.jpg 2.jpg
mv 48 .jpg 3.jpg mv 48.jpg 3.jpg
mv 49 .jpg 4.jpg mv 49.jpg 4.jpg
mv 50 .jpg 5.jpg mv 50.jpg 5.jpg
mv 51 .jpg 6.jpg mv 51.jpg 6.jpg
mv 52 .jpg 7.jpg mv 52.jpg 7.jpg
mv 53 .jpg 8.jpg mv 53.jpg 8.jpg
mv 54 .jpg 9.jpg mv 54.jpg 9.jpg
mv 55 .jpg 10.jpg mv 55.jpg 10.jpg
mv 56 .jpg 11.jpg mv 56.jpg 11.jpg
mv 57 .jpg 12.jpg mv 57.jpg 12.jpg
mv 58 .jpg 13.jpg mv 58.jpg 13.jpg
mv 59 .jpg 14.jpg mv 59.jpg 14.jpg
mv 60 .jpg 15.jpg mv 60.jpg 15.jpg
mv 61 .jpg 16.jpg mv 61.jpg 16.jpg
mv 62 g  

        

再来给大家讲解一下如何生产这个列表:

        第1列,输入mv 46然后下拉一列。

         第2列,输入.jpg 1.jpg然后下拉,后面的数字都会自动增加的。

        第三列呢,是将前两列合并起来 =""&B89&""&C89&""

最后复制第三列,在bash窗口黏贴就可以了。

 

干完这件事,真有成绩感,linux还真好,能完成很多重复的工作。

你可能感兴趣的:(linux,shell,bash)