我想遍历一系列目录,并将所有以 _ test.rb 结尾的文件重命名为以 _ spec.rb 结尾的文件。我一直不知道怎么处理 bash 所以这次我觉得应该下点功夫把它搞定。不过到目前为止,我还差一点,我最大的努力是:
find spec -name "*_test.rb" -exec echo mv {} `echo {} | sed s/test/spec/` \;
注意: 在 exec 之后有一个额外的 echo,这样在我测试它的时候,命令会被打印出来而不是运行。
当我运行它时,每个匹配的文件名的输出是:
mv original original
换句话说,sed 的替换已经丢失了。诀窍是什么?