在Linux系统中,批量重命名文件是一项常见的任务。无论是对图片、文档还是其他类型的文件进行批量处理,掌握一些高效的命令行工具和脚本技巧,可以帮助我们快速完成任务。本文将介绍几种常用的批量重命名方法。
rename
命令rename
命令是Linux中最常用的批量重命名工具之一。它支持正则表达式,可以灵活地修改文件名。
安装rename命令
在某些Linux发行版中(如Ubuntu),rename
可能默认未安装。可以通过以下命令安装:
sudo apt-get install rename
基本语法
rename
的基本语法如下:
rename 's/旧字符串/新字符串/' 文件名模式
其中s/旧字符串/新字符串/
表示用正则表达式的替换规则。
示例
假设当前目录下有一系列以.txt
结尾的文件,我们希望将这些文件的扩展名改为.log
。
rename 's/.txt$/.log/' *.txt
mv
命令结合for
循环如果系统中没有rename
命令,也可以通过mv
命令结合for
循环来实现批量重命名。
编写脚本
使用for
循环遍历目标文件,并通过mv
命令逐一重命名。
示例
将所有以file_
开头的文件名前缀改为document_
:
for file in file_*; do
mv "$file" "document_${file#file_}"
done
解释:
file_*
匹配所有以file_
开头的文件。${file#file_}
去掉原文件名中的file_
部分。mv
命令将文件重命名为新的名称。mmv
命令mmv
是一个功能强大的批量重命名工具,支持通配符和复杂的模式匹配。
安装mmv
如果系统中没有预装mmv
,可以通过以下命令安装:
sudo apt-get install mmv
基本语法
mmv
的基本语法如下:
mmv "源文件模式" "目标文件模式"
示例
将所有以数字开头的文件移动到backup/
目录,并将文件名前加上backup_
:
mmv '[0-9]*' 'backup/backup_&'
对于更复杂的重命名需求,可以编写Shell脚本来实现自动化。例如,根据文件创建时间生成新的文件名,或者为每张图片添加序列号等。
以下脚本会将当前目录下的所有.jpg
文件按顺序重命名为photo1.jpg
, photo2.jpg
等:
#!/bin/bash
i=1
for file in *.jpg; do
newname="photo$i.jpg"
mv "$file" "$newname"
i=$((i+1))
done