描述
Linux rename 重命名多个文件。支持通配符和正则表达式。
可通过 man rename
查看相关帮助文档。
语法
rename [ -v ] [ -n ] [ -f ] perlexpr [ files ]
参数
-v, --verbose:打印重命名后的文件。
-n, --no-act:显示将要重命名的文件,带-n时并没有执行重命名。
-f, --force:强制:覆盖现有文件。
rename重命名单个文件
例如有deviceConfig.cpp文件,要重命名为deviceConfig.cpp.bk
方式一:
rename deviceConfig.cpp deviceConfig.cpp.bk deviceConfig.cpp
# 修改失败提示
Bareword "deviceConfig" not allowed while "strict subs" in use at (eval 1) line 1.
Bareword "cpp" not allowed while "strict subs" in use at (eval 1) line 1.
http://blog.chinaunix.net/uid-26557245-id-3570135.html
可使用linux mv命令来完成重命名。
方式二:利用某种规则
rename 's/cpp$/cpp.bk/' deviceConfig.cpp
rename正则表达式示例
字母的替换
rename 's/AA/aa/' * #把文件名中的AA替换成aa
注意:单引号的英文格式下的,不然会有错误提示:Unrecognized character \xE2; marked by <-- HERE after <-- HERE near column 1 at (eval 1) line 1.
修改文件的后缀
rename 's/\.html/.php/' * #把.html 后缀的改成 .php后缀
批量添加文件后缀
rename 's/$/.txt/' * #把所有的文件名都以txt结尾
批量删除文件名
rename 's/\.txt//' * #把所有以.txt结尾的文件名的.txt删掉
注意:
- 删除后存在重名时删除失败,可添加-f参数覆盖;
- 只删除当前路径,不删除子目录;
如我们想把文件扩展名为.bak 的文件扩展名去掉,可以这样
rename 's/.bak$//' *.bak
去除文件名中的空格
rename 's/ //g' *
g 是global的意思,替换所有的空格为空字符(也就是删除啦)
文件名转为小写
rename 'y/A-Z/a-z/' *
参考资料
https://blog.csdn.net/w849593893/article/details/82587695
https://blog.csdn.net/eden_blue/article/details/57123205?utm_medium=referral&utm_source=itdadao
https://www.linuxidc.com/Linux/2019-08/160328.htm
https://www.cnblogs.com/dingbj/p/10089686.html