我正在尋找一種方式,子目錄刪除文件,無論深度也不斷檔不刪除的排除列表。如何刪除子目錄中的文件和文件夾,但跳過刪除Ruby中的某些文件名?
排除列表= [my.file]
給定文件夾結構(文件夾與/結束)
one/
my.file
two/
x.x
x.x
xxx/
xx
my.file
xxxx/
xx
後刪除(每一個文件被刪除不在排除列表,如果沒有子文件夾被刪除)
one/
my.file
two/
xxx/
my.file
我一直USI NG此到目前爲止,但不會低於第一級
inside(directory) do
FileUtils.rm_rf Dir.glob('*').reject { |f| whitelist.include?(f) }
end
歡迎來到Stack Overflow。在你說你不想遞歸刪除的註釋中,你想*選擇性地*刪除,而這聽起來像你只想刪除那些缺少.gitignore文件的目錄。如果是這樣,請更新您的問題以包含真實需求。因爲你的問題與你所說的要求不符,這對那些試圖幫助你的人來說是一種誤導和沮喪。 –
我的不好,對不起,雖然我把拒絕電話留在命令中讓它更清楚一點。我會更新。 – user391986
一些思考是是否使用'Dir.glob( '**/*')'或趁['Find.find'](http://ruby-doc.org/stdlib-2.2.2 /libdoc/find/rdoc/Find.html)方法。在一個複雜的目錄結構中,第一個可能需要很長時間才能運行,因爲它會通過構建入口數組,然後將其保存在內存中。使用'Find.find'將立即開始處理,並遞歸下降,將您遇到的目錄和文件名一一遞交給您。它效率高得多,但寫得更復雜一點。我建議使用Find.find。 –