在Linux操作系统中,重命名文件夹是一项常见的文件管理操作,通常通过mv命令实现。mv命令不仅可以用于移动文件或目录,还支持对文件和目录进行重命名,其基本语法为mv [选项] 源文件或目录 目标文件或目录,当源文件和目标文件位于同一目录下时,mv命令实际上执行的是重命名操作;若位于不同目录,则实现移动功能,以下将详细介绍Linux中重命名文件夹的各种方法、注意事项及实际应用场景。

基本重命名操作
最简单的重命名场景是将当前目录下的文件夹重命名为新名称,将名为old_folder的文件夹重命名为new_folder,只需执行以下命令:
mv old_folder new_folder
执行该命令后,old_folder将被重命名为new_folder,原文件夹内容保持不变,需要注意的是,目标名称不能与当前目录下已存在的文件或目录同名,否则会报错提示“目标文件已存在”。
批量重命名文件夹
当需要批量重命名多个文件夹时,可以使用for循环结合mv命令实现,将当前目录下所有以temp_开头的文件夹重命名为new_开头:
for dir in temp_*; do
mv "$dir" "new_${dir#temp_}"
done
上述命令中,for遍历所有匹配temp_*的文件夹,${dir#temp_}表示移除字符串开头的temp_部分,再与new_拼接形成新名称,批量操作前建议先使用echo命令预览重命名结果,避免误操作:

for dir in temp_*; do
echo "mv '$dir' 'new_${dir#temp_}'"
done
使用rename命令批量重命名
除了mv命令,Linux还提供了rename工具,支持基于正则表达式的批量重命名。rename命令有两种版本:Perl版(功能更强大)和C语言版(语法不同),以Perl版为例,其语法为rename 's/旧模式/新模式/' 文件列表,将所有包含old_name的文件夹替换为new_name:
rename 's/old_name/new_name/' */
其中表示匹配所有目录,若需递归处理子目录,可结合find命令:
find . -type d -name "*old_name*" -exec rename 's/old_name/new_name/' {} +
交互式与安全重命名
为避免误操作,可在mv命令中添加-i选项,实现交互式重命名,当目标文件已存在时,系统会提示用户确认是否覆盖:
mv -i old_folder new_folder
若需强制覆盖而不提示,可使用-f选项:

mv -f old_folder new_folder
mv命令还支持-v选项(显示详细操作过程)和-n选项(不覆盖已存在文件),
mv -vn old_folder new_folder
重命名时的常见错误及解决方法
- 目标名称已存在:若目标文件夹与现有文件同名,
mv命令会报错,可通过先备份或删除目标文件夹解决,但需谨慎操作。 - 权限不足:若对目标文件夹无写权限,需使用
sudo提权:sudo mv /path/to/old_folder /path/to/new_folder
- 特殊字符处理:若文件夹名包含空格或特殊字符(如
my folder),需用引号包裹:mv "my folder" "new folder"
重命名操作的替代工具
除了mv和rename,还可使用mmv工具(需安装)实现更灵活的重命名,将所有.txt文件夹改为.doc:
mmv "*.txt" "#1.doc"
其中#1表示匹配通配符的部分。
实际应用场景
- 整理项目目录:将开发项目中的
test_v1、test_v2等目录重命名为规范格式,如project_test_v1。 - 批量处理日志文件:将按日期命名的日志目录(如
log_20230101)统一格式化为log_2023-01-01。 - 系统维护:升级软件后,将旧版本目录(如
app_old)重命名为app_backup以保留备份。
重命名操作的注意事项
- 绝对路径与相对路径:
mv命令支持绝对路径(如/home/user/old_folder)和相对路径(如./old_folder),需根据实际需求选择。 - 跨文件系统移动:若源目录和目标位置位于不同文件系统,
mv命令会先复制再删除原目录,耗时较长。 - 符号链接处理:若重命名的是符号链接指向的目录,实际链接内容不受影响,仅链接名变更。
Linux中重命名文件夹主要通过mv命令实现,结合for循环、rename等工具可完成批量操作,用户需注意路径、权限及目标名称冲突等问题,必要时通过选项(如-i、-v)提升操作安全性,熟练掌握这些命令能显著提高文件管理效率,尤其在服务器运维或开发场景中更为实用。
相关问答FAQs
Q1: 如何在Linux中递归重命名子目录中的文件夹?
A: 可结合find和mv命令实现递归重命名,将当前目录及子目录中所有old_dir重命名为new_dir:
find . -type d -name "old_dir" -execdir mv {} new_dir \;
其中-execdir表示在文件所在目录执行命令,避免路径问题。
Q2: 重命名文件夹时如何保留原文件夹的权限和时间戳?
A: mv命令默认保留文件的元数据(包括权限、时间戳等),无需额外操作,但若通过复制方式重命名(如cp -r后再删除原目录),则需使用--preserve选项:
cp -r --preserve=mode,timestamps old_folder new_folder && rm -rf old_folder
