Linux下进行批量重命名
安装
Ubuntu
apt install rename
Arch
yay perl-rename
# OR
yaourt -S perl-rename
使用
rename [OPTIONS] perlexpr files
perlexpr
是perl正则表达式
参数 | 参数 | 描述 |
---|---|---|
-v | --verbose | 打印成功重命名的文件名 |
-n | --nono | 打印要重命名的文件名,但不进行处理。 |
-f | --force | 允许覆盖现有文件 |
--path | --fullpath | 重命名完整路径,包括任何目录组件 |
-d | --filename, --nopath, --nofullpath | 不重命名目录,只重命名文件名部分 |
-m | --man | 输出手册 |
示例
# 以下示例将所有扩展名为 .html 的文件更改为 .php:
rename 's/.html/.php/' *.html
rename -n 's/.html/.php/' *.html # -n 输出并不执行
rename -f 's/.html/.php/' *.html # -f 允许覆盖现有文件
# 用下划线替换文件名中的空格
rename 'y/ /\_/' *
# 将大写转换为小写
rename 'y/A-Z/a-z/' *
# 将文件名的左括号 ( 去掉
rename 's/^\(//' *
# 将十以内的数字前加上字符0
rename -v -n 's/^(\d)$/0$1/' *
正则格式
s/<pattern>/<replacement>/gi
tr/<pattern>/<replacement>/gi
y/<pattern>/<replacement>/gi
# g 全局(不带着个选项只匹配一次)
# i 不区分大小写
# s 替换
# tr or y 转化,原字符串和目标字符串逐字替换
CentOS
在CentOS上安装的uname
是没有正则功能的,这个时候可以用vim
这个工具进行代替
- 在要重命名的页面上打开一个空的
vim
- 输入
:
进入命令模式 - 输入命令
:read !ls
。这个时候屏幕上应该出现这个目录下的所有文件的文件名,一行一个。 -
在命令模式输入
:%s#\(.*\)#mv \1 \1#g
将命令重命名为mv
命令。在这一步可以选择替换成想要的名字,也可以进入插入模式对单个的文件进行修改。 -
修改完成后,退出编辑模式回到正常模式,然后进入命令模式输入
:write !sh
- 然后退出
vim
就可以看到修改后的文件名了。