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

How to use find ,-exec and cp commands together in ruby code?

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

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

它具有用于复制、移动、删除等多种文件实用程序方法的名称空间

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

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

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

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

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