Bash 没有对每个匹配的文件调用OSX find和sed
首先,我的问题是: 我有数千个测试文件,它们当前在另一个函数中调用一个函数。这可以放在文件中的任何位置,但只能调用一次。结构如下:Bash 没有对每个匹配的文件调用OSX find和sed,bash,macos,replace,sed,find,Bash,Macos,Replace,Sed,Find,首先,我的问题是: 我有数千个测试文件,它们当前在另一个函数中调用一个函数。这可以放在文件中的任何位置,但只能调用一次。结构如下: md=mod.solver(mod,TestFunctionCall()) 我需要用字符串替换函数调用TestFunctionCall(),具体来说,我需要删除call(),并用'字符替换它。我还需要在TestFunctionCall()的开头添加一个'标记。因此,基本上我想做以下工作: TestFunctionCall()->“TestFunction” 因此,我
md=mod.solver(mod,TestFunctionCall())代码>
我需要用字符串替换函数调用TestFunctionCall()
,具体来说,我需要删除call()
,并用'
字符替换它。我还需要在TestFunctionCall()
的开头添加一个'
标记。因此,基本上我想做以下工作:
TestFunctionCall()->“TestFunction”
因此,我的最终输出应该如下所示:
md=mod.solver(mod,'TestFunction')代码>
问题是,TestFunction
有许多不同的名称,尽管它们以Call()
结尾,但它们可能有不同的名称(例如MySolverCall()
,HelloWorldCall()
,等等)
由于我想要的所有文件都有名称和扩展名test*.txt
,我想这对于find
和sed
来说足够简单。因此,我使用了以下命令:
find-键入f-name“test*.txt”-exec sed“s/solver(mod,\(.*\)Call()/solver(md,\'\1\'/g”{};
这会在我正在编辑的文件中向我吐出大量文本,然后它会正确地替换FunctionNameCall()
使用'FunctionName'
,但在决定停止之前,它只在大约10个文件中执行此操作。似乎无论我调用此命令的文件有多少,它在停止之前只会编辑大约10个文件
如何使其编辑当前目录中名为test*.txt
的每个文件?是否查找。-键入f-name“test*.txt”-exec echo{}\
输出所有文件名?@123 Yep:(我有一种感觉,它不能处理来自sed
的所有输出,也许?不管有多少输出,因为它都直接发送到STDOUT。@Alex我想你的子文件夹中有文件,因此使用find
。否则可以直接给它们sed'command'test*.txt
。其次,你能手动复制几个文件吗(超过10个)到另一个文件夹,看看它是否工作。您可以尝试使用它find..-exec sed的/../../g'{}>/path/to/mage/output.txt来查看问题是否与屏幕的输出或其他内容有关吗?在发出find
之前,也可以使用set-x
。