我想在文件夹中递归地找到.plist文件,并通过单个终端命令将这些文件复制到新文件夹中。
find /Users/admin/Desktop/Norton/StaticAnalysis -iname "*.plist" -exec cp {} /Users/admin/Desktop/Test \;
这是在终端中正常工作的命令。
但我必须在ruby代码中使用此命令。
当我在像
这样的ruby代码中使用它时代码1:
system ("find /Users/admin/Desktop/Norton/StaticAnalysis -iname \"*.plist\" -exec cp {} /Users/admin/Desktop/Test \;")
puts $?.success?
输出是:
find: -exec: no terminating ";" or "+"
false
代码2:
system ("find /Users/admin/Desktop/Norton/StaticAnalysis -iname \"*.plist\" -exec cp {} /Users/admin/Desktop/Test \;");
end
puts $?.success?
输出是:
siva.rb:2: syntax error, unexpected keyword_end, expecting end-of-input
所以请帮我解决如何在ruby代码中使用它。
答案 0 :(得分:2)
您是否尝试使用FileUtils模块(fileutils.rb)?
它有几个文件实用程序方法的命名空间,用于复制,移动,删除等。
答案 1 :(得分:0)
system ("find ... -exec ... \;")
ruby将双引号内的\;
解释为;
。你需要加倍反斜杠
system ("find ... -iname \"*.plist\" -exec ... \\;")
或使用不同的外部引号,这意味着您不必转义内部引号
system %q{find ... -iname "*.plist" -exec ... \;}