Ubuntu批量重命名文件的常用方法
rename是基于Perl正则表达式的批量重命名工具,功能强大且灵活,是Ubuntu下最常用的批量重命名工具之一。
sudo apt install rename
rename 's/旧字符串/新字符串/' 文件模式
s/旧字符串/新字符串/:Perl正则表达式,s表示替换,旧字符串是需要被替换的部分,新字符串是替换后的内容;文件模式:如*.txt(所有.txt文件)、file*.jpg(以file开头的.jpg文件)。.txt文件的扩展名改为.md:rename 's/\.txt$/.md/' *.txt
image_开头的.jpg文件中的image_替换为photo_:rename 's/^image_//' *.jpg
rename 'y/a-z/A-Z/' *
--nono选项可模拟运行(不实际修改文件),确认无误后再执行正式命令:rename --nono 's/old/new/' *.txt
若不想安装rename,可通过for循环结合mv命令实现批量重命名,适合简单的模式替换。
for file in 文件模式; do
mv "$file" "新文件名${file#原字符串}"
done
${file#原字符串}:去除文件名中匹配原字符串的前缀(如${file%.txt}去除.txt后缀)。.txt文件重命名为new_前缀的.txt文件:for file in *.txt; do
mv "$file" "new_$file"
done
.jpg文件的后缀改为.png:for file in *.jpg; do
mv "$file" "${file%.jpg}.png"
done
mmv是专门用于批量重命名的工具,支持通配符#1、#2等匹配文件名中的不同部分,语法直观。
sudo apt install mmv
mmv "旧文件名模式" "新文件名模式"
#1、#2:分别匹配旧模式中的第1、2个通配符(*或?)。file*.txt文件重命名为newfile#1.txt(#1对应file后的部分):mmv "file*.txt" "newfile#1.txt"
img_001.jpg、img_002.jpg等文件重命名为image_1.jpg、image_2.jpg:mmv "img_*.jpg" "image_#1.jpg"
若需要递归处理子目录中的文件,或根据文件属性(如创建时间、大小)重命名,可使用find命令结合mv。
find 目录 -type f -name "文件模式" -exec sh -c 'mv "$0" "新文件名$0"' {} \;
-type f:仅查找文件(排除目录);-exec sh -c '...' {} \;:对每个找到的文件执行mv命令。.log文件重命名为.bak:find . -type f -name "*.log" -exec sh -c 'mv "$0" "${0%.log}.bak"' {} \;
Ubuntu默认的文件管理器(Nautilus)支持多文件快速重命名,操作简单。
Ctrl+E或点击左侧“文件”图标);Ctrl键点击选择多个文件(或按Shift键选择连续文件);newfile,系统会自动为文件添加数字后缀(如newfile (1).txt、newfile (2).txt);2025-,系统会自动添加序号(如2025-1.txt、2025-2.txt);Enter键确认。若需要更复杂的功能(如添加前缀/后缀、替换字符、调整序号格式),可使用Bulk Rename Utility(第三方工具)。
sudo apt install bulk-rename-utility
rename --nono或echo mv "$file" "新文件名"测试命令,确认无误后再执行;sudo(谨慎使用)。