2015-03-13 70 views
-1

我想在文件夾中遞歸地查找.plist文件,並通過單個終端命令將這些文件複製到新文件夾中。如何在ruby代碼中使用find,-exec和cp命令?

find /Users/admin/Desktop/Norton/StaticAnalysis -iname "*.plist" -exec cp {} /Users/admin/Desktop/Test \; 

這是在終端工作正常的命令。我不得不在Ruby代碼中使用這個命令。

當我使用這在紅寶石代碼等

CODE 1:

system ("find /Users/admin/Desktop/Norton/StaticAnalysis -iname \"*.plist\" -exec cp {} /Users/admin/Desktop/Test \;") 
puts $?.success? 

輸出是:

find: -exec: no terminating ";" or "+" 

false 

CODE 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

嘗試'\\;'的命令。你需要'\'把它放到shell中。 – 2015-03-13 14:11:20

回答

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

紅寶石解釋\;內雙引號只是;。您需要將反斜槓

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

雙人或使用不同的外部報價,這意味着你沒有逃跑的內部報價

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

您是否使用過FileUtils模塊(fileutils.rb)?

它命名了幾個文件實用方法的複製,移動,刪除等