温馨提示×

linux如何批量改文件名

小樊
56
2026-09-07 14:43:48
栏目: 智能运维

在 Linux 下批量改文件名,常见、实用的方法有下面几种,按使用频率和易用程度给你整理:


一、使用 rename(最推荐,功能强)

1️⃣ Perl 版 rename(Ubuntu/Debian 默认)

rename 's/旧/新/' *

示例:把所有 .txt 改成 .md

rename 's/\.txt$/.md/' *.txt

示例:批量加前缀

rename 's/^/prefix_/' *

示例:空格换成下划线

rename 's/ /_/g' *

⚠️ 先试运行(不真正改):

rename -n 's/旧/新/' *

二、使用 mv + for 循环(通用、可控)

示例:.jpg.png

for 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),我可以直接帮你写命令。

0