You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Bash中重命名所有子目录下的文件?

递归重命名所有子目录中的.txt文件为.txt2

方法1:Perl版本rename配合find(多数Linux发行版默认)

直接用find递归遍历所有文件,再调用rename处理:

find . -type f -name "*.txt" -exec rename 's/\.txt$/.txt2/' {} \;
  • 细节说明:
    • \.txt$是正则写法,$确保只替换文件名末尾的.txt,避免误改文件名中间包含.txt的文件(比如file.txt.bak不会被错误修改)
    • -type f限定只处理文件,跳过同名的目录
    • {}代表find找到的每个文件路径,\;表示-exec命令的结束

方法2:util-linux版本rename(部分系统如CentOS默认)

如果你的rename是util-linux版本(语法更简单,不支持正则),用下面的命令:

find . -type f -name "*.txt" -exec rename .txt .txt2 {} \;

修正原命令的小问题

你原来的命令rename 's/.txt/.txt2' *.txt没有加$,会替换文件名中任意位置的.txt,建议单目录使用时也改成:

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

内容的提问来源于stack exchange,提问作者agm_2502

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 18:12:39