Bash 使用shell进行源代码重构

Bash 使用shell进行源代码重构,bash,shell,sed,find,refactoring,Bash,Shell,Sed,Find,Refactoring,我有一个类似于eclipse中重构选项的需求,但需要从命令行完成。 这里的重构意味着将一个特定的实体(无论是文件还是目录)重命名为其他名称,并在源代码中的任何地方更新其引用 基本上,我需要将父文件夹名称修改为其他名称,在每个文件中,搜索该文件夹名称并用新文件夹名称替换它。 我当前的软件包是app\u demo,我想把它改成app\u demo\u new。另外,无论在哪里,app_demo始终导入源代码,我都必须用app_demo_new替换它 例如: 应该由 import com.site.a

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

基本上,我需要将父文件夹名称修改为其他名称,在每个文件中,搜索该文件夹名称并用新文件夹名称替换它。 我当前的软件包是app\u demo,我想把它改成app\u demo\u new。另外,无论在哪里,app_demo始终导入源代码,我都必须用app_demo_new替换它 例如:

应该由

import com.site.app_demo_new_.*
我试过:

find . -type f -exec sed -i 's/oldname/newname/g' {} +
这会产生一个错误:

find: missing argument to -exec

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

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

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

类似于eclipse中的重构选项
对我们中的许多人来说毫无意义,因为我们不知道
eclipse
是什么,所以如果这句话是为了传达一些在您的问题的其余部分中没有明确说明的信息,那么请编辑您的问题以澄清。此外,在UNIX术语中没有
文件夹
,您可能指的是
目录
,除非
文件夹
eclipse
中具有与Windows中不同的含义。另外,发布一些示例输入和预期输出,因为我们无法从一个脚本中分辨出您真正希望它做的事情。
find . -type f -exec sed -i 's/oldname/newname/g' {} \;