如何在目录和子目录中使用 find 命令重命名文件的一部分

如何在目录和子目录中使用 find 命令重命名文件的一部分

我在目录中有很多日志文件,并且它的子目录名为dataupload_sales_.xxx.com.dat。我想将所有文件xxx.com部分更改为yyy.com当前目录和子目录中。

我希望这不是重复的帖子,因为我已经搜索了论坛并尝试了几个选项,但都没有用。有些帖子建议使用重命名,但只能在单个文件中重命名。我的目录中有 5000 多个子目录,每个子目录都有 100 多个.dat文件。

我也试过

find ./ -name "xxx.com" -exec bash -c 'mv $0 $(echo "$0" | sed -r \"s|xxx.com|yyy.com|g\")' '{}' \;

它显示无效目录错误

答案1

从您想要递归更改文件名的文件夹:

find . -name '*.xxx.com.dat' -exec rename 's/xxx/yyy/' -- {} +

相关内容