只要做到在Ruby中,使用方法Dir::glob
:
# this will give you all the ".exe" files recursively from the directory "Code".
Dir.glob("c:/Code/**/*.exe")
**
- 遞歸匹配所有目錄。這用於下降到目錄樹中,並查找當前目錄的子目錄中的所有文件,而不僅僅是當前目錄中的文件。示例代碼探討了此通配符。
*
- 匹配零個或多個字符。只包含星號且不包含其他字符或通配符的glob將匹配當前目錄中的所有文件。星號通常與文件擴展名組合,如果不是更多字符則縮小搜索範圍。
好博客Using Glob with Directories。
我們複製文件到你需要的目錄,你需要尋找到方法,FileUtils.cp_r
:
require 'fileutils'
FileUtils.cp_r Dir.glob("c:/Code/**/*.exe"), "c:\\bins"
我剛剛測試過,那FileUtils.cp
方法也將工作,在這種情況下:
require 'fileutils'
FileUtils.cp Dir.glob("c:/Code/**/*.exe"), "c:\\bins"
我在這裏偏好使用::cp
方法。因爲Dir::glob
實際上是遞歸地收集擴展名爲.exe
的所有文件,並將它們作爲數組返回。現在cp
方法就夠了,現在只需從陣列中取出每個文件並將其應用到目標文件。
爲什麼我不喜歡這種情況下,方法::cp_r
?
好的,讓我在這裏解釋一下。如方法名稱暗示,它將全部文件遞歸地從源到目標目錄。如果需要遞歸複製特定文件,那麼::cp_r
將無法通過自己的力量來執行此操作(因爲它本身不能進行選擇,而::glob
可以執行此操作)。因此,在這種情況下,您必須爲其指定特定的文件列表,然後將其複製到目標目錄。如果這是唯一的任務,我必須這樣做,那麼我認爲我們應該使用::cp
,而不是::cp_r
。
希望我的解釋有幫助。
當您詢問代碼時,我們希望您向我們展示您嘗試的內容。否則,看起來你正在爲別人爲你做這項工作而沒有付出任何努力。 –
我會使用Ruby的[Find](http://www.ruby-doc.org/stdlib-2.1.1/libdoc/find/rdoc/index.html)類,它可以遞歸地下降到一個目錄來查找文件/符合您的標準的目錄。此時,您可以使用['FileUtils.cp']輕鬆複製文件(http://www.ruby-doc.org/stdlib-2.1.1/libdoc/fileutils/rdoc/FileUtils.html#method-c- CP)。兩個文檔都有示例顯示如何使用它們。 –
@the,我相信[this](http://ruby-doc.org/stdlib-2.1.0/libdoc/find/rdoc/Find.html)是Find模塊的直接鏈接。 –