linux rename 命令
rename
是 Linux 系统中用于一次性修改多个文件名称的命令行工具。它支持通过正则表达式或字符串替换的方式,对大量文件进行快速重命名,适用于需要集中处理文件名的情况。
基本语法
该命令的标准写法如下:
<pre class="brush:php;toolbar:false">rename [参数] '规则' 文件...
参数解释
-
规则
:定义文件名修改方式,可以是正则表达式或替换字符串
-
文件
:待更名的目标文件集合,可使用通配符(例如
*.log
)
常用参数
参数 | 作用 |
---|---|
`-v` | 输出执行过程信息(详细模式) |
`-n` | 仅预览操作结果,不真正执行 |
`-f` | 覆盖已存在的文件 |
`-h` | 查看帮助文档 |
操作示例
1. 替换扩展名
将当前目录下所有
.html
文件改为
.php
:
<pre class="brush:php;toolbar:false">rename 's/.html$/.php/' *.html
说明:
-
s/
表示开始替换
-
.html$
匹配以
.html
结尾的文件名(
$
表示结尾)
-
/.php/
表示替换成
.php
2. 添加前缀
为所有
.txt
文件加上
backup_
前缀:
<pre class="brush:php;toolbar:false">rename 's/^/backup_/' *.txt
3. 清除空格
移除所有文件名中的空格字符:
<pre class="brush:php;toolbar:false">rename 's/ //g' *
注意:
g
表示全局替换(替换所有匹配项)
4. 调整大小写
把
.jpg
后缀统一改成大写格式:
<pre class="brush:php;toolbar:false">rename 's/.jpg$/.JPG/' *.jpg
进阶技巧
1. 使用变量和格式化
<pre class="brush:php;toolbar:false">rename 's/(d+)/sprintf("%03d", $1)/e' *.png
功能:将文件名中的数字部分补零至三位数(如
img1.png
→
img001.png
)
2. 按条件重命名
<pre class="brush:php;toolbar:false">rename 'if (/.jpeg$/) { s/.jpeg$/.jpg/ }' *
功能:只对后缀为
.jpeg
的文件进行重命名
注意事项
- 提前备份关键数据:建议先用
-n
测试效果再正式执行
- 正则差异性:不同系统的
rename
实现可能略有区别
- 特殊字符处理:文件名含特殊符号时需进行转义
- 权限控制:确保拥有目标文件的写入权限
替代方法
若系统未安装
rename
工具,可尝试以下方案:
1. 利用
mv
mv
配合循环实现
示例
for file in *.html; do
mv “$file” “${file%.html}.php”
done
2. 安装 perl 版 rename
示例
# ubuntu/debian
sudo apt install rename
# centos/RHEL
sudo yum install prename
总结
rename
是 Linux 中非常实用的批量改名工具,掌握其正则表达式语法能够轻松应对各种复杂的文件名调整任务。建议从基础替换开始学习,逐步提升到复杂应用。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END