温馨提示×

怎样批量重命名linux文件

小樊
45
2026-10-28 10:22:52
栏目: 智能运维

在 Linux 下批量重命名文件有多种方式,下面按常用程度和学习成本给你介绍几种方法,并附示例。


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

1️⃣ Perl 版 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 都有)

示例 1:加后缀

for f in *.jpg; do
    mv "$f" "${f%.jpg}_new.jpg"
done

示例 2:统一编号

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

六、图形界面(适合新手)

  • Thunar(Xfce)
  • Nautilus(GNOME)
  • Double Commander

都支持批量重命名。


⚠️ 注意事项

  1. 先测试

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

    -n 表示只预览不执行

  2. 文件名有空格一定要用双引号:

    mv "$f" "new_$f"
    
  3. 不同系统 rename 不一样:

    • Debian/Ubuntu:Perl rename ✅
    • CentOS:可能是简单 rename ❌

如果你能告诉我:

  • 文件示例
  • 想怎么改(加前缀 / 替换字符 / 编号)

我可以直接给你一条可用命令。

0 踩