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
(谨慎使用)。