教你三招快速文件批量重命名方法

简介: 教你三招快速文件批量重命名方法

在我们的工作生活中,不管是程序员还是非程序员,我们都会遇到过一个需求,那就是对一堆的文件进行重命名。在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命令完成重命名动作。


相关实践学习
使用CLup和iSCSI共享盘快速体验PolarDB for PostgtreSQL
在Clup云管控平台中快速体验创建与管理在iSCSI共享盘上的PolarDB for PostgtreSQL。
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
目录
相关文章
|
1月前
|
机器学习/深度学习 uml
Markdown编辑器用法保存自用
Markdown编辑器用法保存自用
|
移动开发 机器学习/深度学习 安全
|
1月前
|
弹性计算 运维 Shell
文件批量重命名
【4月更文挑战第30天】
30 0
|
1月前
|
Python
Python实现删除磁盘上空文件夹
Python实现删除磁盘上空文件夹
18 0
|
1月前
|
定位技术 Python
Python对比两个文件夹中子文件夹或文件的差异并查漏补缺
Python对比两个文件夹中子文件夹或文件的差异并查漏补缺
|
1月前
|
Linux Shell C语言
Linux编程之删除文件时排除某个文件
Linux编程之删除文件时排除某个文件
54 0
|
Windows
将指定文件夹纳入OneDrive同步:mklink命令
本文介绍利用mklink语言,使得OneDrive自动同步电脑中任意指定文件夹的方法~
452 1
将指定文件夹纳入OneDrive同步:mklink命令
|
存储 Ubuntu Linux
有了这些,文件批量重命名还需要求助其它工具吗?
Linux下文件重命名可以通过两个命令完成,mv和rename。
187 0