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

如何用Bash将所有txt文件批量重命名为myfile.txt?

问题分析

你之前用的命令之所以会把文件弄没,是因为mv {} myfile.txt会把所有找到的.txt文件都移动并重命名到当前执行命令的目录下的myfile.txt——后面找到的文件会直接覆盖前面的,最后就只剩最后一个被处理的文件,其他的都被覆盖消失了。

正确解决方法

要实现每个.txt文件在自己所在的目录里重命名为myfile.txt,有两种简单的方式:

方式一:用-execdir(推荐,更简洁)

find的-execdir选项会自动切换到找到文件的所在目录,再执行后续命令,这样直接重命名就不会跑到上级目录:

find . -type f -name '*.txt' -execdir mv {} myfile.txt \;

方式二:用dirname获取文件所在目录

如果你的find版本不支持-execdir,可以用dirname命令先提取文件的目录路径,再指定重命名的目标路径:

find . -type f -name '*.txt' -exec sh -c 'mv "$0" "$(dirname "$0")/myfile.txt"' {} \;

这里$(dirname "$0")会获取当前处理文件的目录,然后把文件移动到该目录下的myfile.txt,相当于在文件原目录内重命名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 10:29:56