如何在ruby代码中一起使用find,-exec和cp命令?

时间:2015-03-13 13:30:31

标签: ruby-on-rails ruby shell terminal command

我想在文件夹中递归地找到.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代码中使用它。

2 个答案:

答案 0 :(得分:2)

您是否尝试使用FileUtils模块(fileutils.rb)?

它有几个文件实用程序方法的命名空间,用于复制,移动,删除等。

答案 1 :(得分:0)

system ("find ... -exec ... \;")

ruby​​将双引号内的\;解释为;。你需要加倍反斜杠

system ("find ... -iname \"*.plist\" -exec ... \\;")

或使用不同的外部引号,这意味着您不必转义内部引号

system %q{find ... -iname "*.plist" -exec ... \;}