在咱们的工作生存中,不论是程序员还是非程序员,咱们都会遇到过一个需要,那就是对一堆的文件进行重命名。在 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 变量里去循环操作。
在循环体里,咱们应用 mv 命令进行重命名。这里咱们应用 ${name%.txt}
这种字符串解决形式,示意从 name 尾部开始删除与 .txt
匹配的最小局部,并返回残余局部。之后,再加上 .cpp
后缀。通过这种操作,咱们就能够将文件名后缀从.txt 改为.cpp。最初咱们用 mv 命令将这个文件名真正改过来。
3. sed 命令配合 for 循环形式
如果咱们当初有一堆文件,文件名格局是 test01.txt,test02.txt,test03.txt,test04.txt
也就是前半部分是英文,后半局部是数字。咱们当初想将文件名改成 test-01.txt
这种模式。这次,咱们用 sed 命令来实现这个需要。
咱们还是先来看看残缺的代码。
#!/bin/bash
for file in `ls *.txt`
do
newFile=`echo $file | sed 's/\([a-z]\+\)\([0-9]\+\)/\1-\2/'`
mv $file $newFile
done
后面一样用 ls \*.txt
来获取所有的 .txt
文件。之后再用 echo 命令将其依次输入,作为 sed 命令的输出。
接下来,达到要害局部了。乍一看 sed 的命令可能有点可怕,但老司机早已司空见惯了。反引号里的内容其实是这样的根本构造:
s/ 原字符串 / 代替的字符串 /
这里咱们用到了分组匹配,也就是用括号依照肯定的正则表达式将原字符串进行分组,前面再用 \1,\2,\3……
来援用后面的分组,从而在代替的字符串里拼凑成相应的格局。
前文已讲述,原文件名是由前局部英文及后局部数字所形成的,英文能够用 [a-z]+
示意,数字能够用 [0-9]+
示意。留神不要遗记加号,示意后面字符的若干反复。而后,咱们用 1、2 别离援用后面的对应局部,再用横杆连起来,于是就成了这样:
s/([a-z]+)([0-9]+)/\1-\2/
因为在不同的 Shell 里,括号及加号可能会有不同的含意,所以后面要再加一个本义符,于是就成了后面所见到的样子。
再之后,同样应用 mv 命令实现重命名动作。
最初,最近很多小伙伴找我要 Linux 学习路线图 ,于是我依据本人的教训,利用业余时间熬夜肝了一个月,整顿了一份电子书。无论你是面试还是自我晋升,置信都会对你有帮忙!
收费送给大家,只求大家金指给我点个赞!
电子书 | Linux 开发学习路线图
也心愿有小伙伴能退出我,把这份电子书做得更完满!
有播种?心愿老铁们来个三连击,给更多的人看到这篇文章
举荐浏览:
- 干货 | 程序员进阶架构师必备资源免费送
- 神器 | 反对搜寻的资源网站