【问题标题】:Source refactoring using shell使用 shell 重构源代码
【发布时间】:2015-07-31 05:17:02
【问题描述】:

我有一个类似于 Eclipse 中的重构选项的要求,但要从命令行完成。 此处的重构意味着将特定实体(无论是文件还是目录)重命名为其他名称,并在源代码中的任何位置更新其引用。

基本上,我需要将父文件夹名称修改为其他名称,并在每个文件中搜索该文件夹名称并将其替换为新文件夹名称。 例如:我当前的包是 app_demo ,我想把它改成 app_demo_new 。同样在任何地方,app_demo 都在源代码中导入,我必须用 app_demo_new 替换它 例如:

import com.site.app_demo.* 

应该替换为

import com.site.app_demo_new_.*

我试过了:

find . -type f -exec sed -i 's/oldname/newname/g' {} +

这给出了一个错误:

find: missing argument to -exec

对如何实现对所有文件、文件夹和文件内容的这种深度重构有什么建议吗?

【问题讨论】:

  • similar to refactoring option in eclipse 对我们中的许多人来说绝对没有任何意义,因为我们不知道eclipse 是什么所以如果该声明旨在传达您的问题的其余部分未明确说明的一些信息,那么请编辑您的问题以澄清。此外,在 UNIX 术语中没有 folders,您的意思可能是 directories,除非 foldereclipse 中的含义与在 Windows 中的含义不同。此外,请发布一些示例输入和预期输出,因为我们无法从无法正常工作的脚本中看出您真正想要它做的事情。

标签: bash shell sed find refactoring


【解决方案1】:

我不知道命令末尾的+ 是什么意思。我通常在命令末尾添加\;,比如

find . -type f -exec sed -i 's/oldname/newname/g' {} \;

【讨论】:

    猜你喜欢
    • 2012-01-15
    • 2010-10-14
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 2011-10-12
    • 2015-02-28
    • 1970-01-01
    • 2012-12-21
    相关资源
    最近更新 更多