在我们的工作生活中,不管是程序员还是非程序员,我们都会遇到过一个需求,那就是对一堆的文件进行重命名。在Windows下有很多优秀的软件可以帮助我们完成这个需求,而在Linux环境下,我们可以简单敲一些代码就可以完成这个需求。
本文良许将介绍三种最基本的文件重命名方法,因为比较基本,所以老司机可以到此为止。
1. rename命令
顾名思义,rename命令就是用来进行重命名文件名的。rename命令有非常强大的功能,我们可以用它来实现各种各样复杂的文件名的修改。但是,本文只介绍它最最基本的功能,后期再更新rename其它强大的重命名功能。rename的最基本的格式如下:
rename 源字符串 目标字符串 文件
其中,源字符串表示原文件名需要替换的字符串,可以是原文件名的全部或部分;目标字符串就是想要替换成的字符串;文件就是需要更改文件名的文件列表,可以是一个或多个。
现假如目录下有一堆atb_mod_01.cpp,atb_mod_02.cpp,atb_mod_03.cpp,atb_mod_04.cpp等形式的文件,我们的需求是将文件名中的mod改成adb,那么完成这个需求的命令如下:
[alvin@VM_0_16_centos exp3]$ ls atb_mod_01.cpp atb_mod_02.cpp atb_mod_03.cpp atb_mod_04.cpp [alvin@VM_0_16_centos exp3]$ rename mod adb * [alvin@VM_0_16_centos exp3]$ ls atb_adb_01.cpp atb_adb_02.cpp atb_adb_03.cpp atb_adb_04.cpp
2. mv命令配合for循环方式
假如我们现在有一堆.txt文件,我们想将它们的后缀改成.cpp。先来看完整的代码:
#!/bin/bash for name in `ls *.txt` do mv $name ${name%.txt}.cpp done
我们都知道,在Linux里重命名是用 mv 命令,那批量重命名自然会想到用循环语句嵌套mv命令。
在这里,我们用ls *.txt将当前目录下所有的txt文件全部列出来,然后逐个放在name变量里去循环操作。