linux中修改文件后缀名有五种方法:一、mv命令单个修改;二、for循环批量改同后缀;三、rename命令正则批量替换;四、shell脚本交互式批量处理;五、find配合-exec递归修改。

如果您需要在Linux系统中修改单个或多个文件的后缀名,可通过命令行快速完成。以下是几种常用且互不依赖的实现方式:
一、使用mv命令单个修改文件后缀名
mv命令是Linux中最基础的重命名工具,适用于逐个更改文件扩展名。该方法不依赖外部脚本,直接调用shell内置功能,安全可靠。
1、打开终端,进入目标文件所在目录。
2、执行命令:mv original.txt original.md。
3、验证修改结果:ls -l original.md。
二、使用for循环批量修改相同后缀文件
通过Bash for循环遍历匹配文件,结合参数扩展语法剥离旧后缀并添加新后缀,适合同目录下统一格式批量处理。
1、切换至目标目录:cd /path/to/files。
2、运行批量命令:for file in *.txt; do mv "$file" "${file%.txt}.md"; done。
3、检查结果:ls *.md。
三、使用rename命令批量重命名(Perl版本)
rename命令基于Perl正则表达式引擎,支持模式匹配与替换,可精准定位并修改后缀部分,避免误改文件名主体。
1、确认系统已安装rename:rename --version(若未安装,Debian系执行sudo apt install rename,RHEL系执行sudo yum install prename)。
2、将所有.txt改为.log:rename 's/\.txt$/.log/' *.txt。
3、预览将要执行的操作(仅显示变更,不实际执行):rename -n 's/\.log$/.bak/' *.log。
四、编写Shell脚本实现交互式批量修改
该脚本接受用户输入的旧后缀、新后缀及目标路径,自动识别并安全重命名,支持空格文件名与相对路径解析。
1、创建脚本文件:nano batch_rename.sh。
2、写入以下内容:#!/bin/bash
echo "请输入旧后缀(例如:.old):" ; read old_ext
echo "请输入新后缀(例如:.new):" ; read new_ext
echo "请输入目标目录(留空则为当前目录):" ; read dir
[ -z "$dir" ] && dir="."
for f in "$dir"/*"$old_ext"; do [ -e "$f" ] && mv "$f" "${f%"$old_ext"}$new_ext"; done。
3、赋予执行权限:chmod +x batch_rename.sh。
4、运行脚本:./batch_rename.sh。
五、使用find配合-exec进行递归批量修改
当需跨子目录修改所有匹配文件时,find命令可深度遍历目录树,并对每个匹配项调用mv完成重命名,确保无遗漏。
1、进入顶层目录:cd /top/level/path。
2、执行递归修改(仅限当前目录及子目录下的.txt文件):find . -type f -name "*.txt" -exec bash -c 'mv "$1" "${1%.txt}.rst"' _ {} \;。
3、验证修改范围:find . -name "*.rst" | head -10。










