【发布时间】:2011-06-15 04:47:37
【问题描述】:
我想浏览一堆目录并将所有以 _test.rb 结尾的文件重命名为以 _spec.rb 结尾。这是我从来没有完全弄清楚如何用 bash 做的事情,所以这次我想我会付出一些努力来搞定它。到目前为止,我还不够,我最大的努力是:
find spec -name "*_test.rb" -exec echo mv {} `echo {} | sed s/test/spec/` \;
注意:在 exec 之后有一个额外的回显,以便在我测试它时打印而不是运行命令。
当我运行它时,每个匹配的文件名的输出是:
mv original original
即sed 的替换已丢失。有什么诀窍?
【问题讨论】:
-
顺便说一句,我知道有一个重命名命令,但我真的很想弄清楚如何使用 sed 来执行此操作,以便将来可以执行更强大的命令。
-
请不要cross-post。
标签: bash scripting sed find replace