在 Linux 下批量重命名文件有多种方式,下面按常用程度和学习成本给你介绍几种方法,并附示例。
rename 命令(最推荐,功能强)很多发行版自带的是 Perl rename。
rename 's/旧内容/新内容/' 文件名匹配
把当前目录下所有 .txt 改成 .bak:
rename 's/\.txt$/.bak/' *.txt
给所有文件加前缀:
rename 's/^/prefix_/' *
把文件名中的空格换成下划线:
rename 's/ /_/g' *
✅ 支持正则
❗ 不同系统 rename 可能不一样(见下方说明)
mmv(简单直观)mmv "*.txt" "#1.bak"
* 对应 #1需要安装:
sudo apt install mmv
for 循环(最通用,任何 Linux 都有)for f in *.jpg; do
mv "$f" "${f%.jpg}_new.jpg"
done
i=1
for f in *.png; do
mv "$f" "image_$i.png"
((i++))
done
✅ 最稳妥
✅ 可定制逻辑
❌ 写起来稍麻烦
find + rename(处理子目录)find . -type f -name "*.log" -exec rename 's/\.log$/.txt/' {} +
bash 参数展开(轻量)for f in file_*; do
mv "$f" "${f/file_/doc_}"
done
都支持批量重命名。
先测试
rename -n 's/旧/新/' *
-n 表示只预览不执行
文件名有空格一定要用双引号:
mv "$f" "new_$f"
不同系统 rename 不一样:
如果你能告诉我:
我可以直接给你一条可用命令。