使用find和sed递归重命名文件

16 浏览
0 Comments

使用find和sed递归重命名文件

我想遍历一堆目录,并将所有以_test.rb结尾的文件重命名为以_spec.rb结尾的文件。这是我一直以来在bash中无法解决的问题,所以这一次我决定付出一些努力来解决它。然而,到目前为止,我还没有找到解决办法,我最好的尝试是:

find spec -name "*_test.rb" -exec echo mv {} `echo {} | sed s/test/spec/` \;

注:在exec之后有一个额外的echo,这样在我测试时会打印出命令而不是运行它。

当我运行它时,每个匹配的文件名的输出为:

mv original original

也就是说,sed的替换被丢失了。有什么技巧吗?

0