在 Linux 下批量改文件名,常见、实用的方法有下面几种,按使用频率和易用程度给你整理:
rename(最推荐,功能强)rename 's/旧/新/' *
示例:把所有 .txt 改成 .md
rename 's/\.txt$/.md/' *.txt
示例:批量加前缀
rename 's/^/prefix_/' *
示例:空格换成下划线
rename 's/ /_/g' *
⚠️ 先试运行(不真正改):
rename -n 's/旧/新/' *
mv + for 循环(通用、可控).jpg → .pngfor f in *.jpg; do
mv "$f" "${f%.jpg}.png"
done
i=1
for f in *; do
mv "$f" "file_$i.${f##*.}"
i=$((i+1))
done
mmv(适合通配符替换)安装:
sudo apt install mmv
使用:
mmv "*.txt" "#1.md"
find + mv(处理子目录)find . -type f -name "*.txt" -exec bash -c \
'mv "$0" "${0%.txt}.md"' {} \;
sed 生成命令(谨慎)ls *.txt | sed 's/\(.*\)\.txt/mv \1.txt \1.md/' | bash
⚠️ 容易出错,不推荐新手
| 场景 | 推荐 |
|---|---|
| 简单替换 | rename |
| 复杂逻辑 | for + mv |
| 子目录 | find |
| 通配符 | mmv |
如果你有具体的文件名例子(比如 a1.jpg → img_001.jpg),我可以直接帮你写命令。