2010-10-06 33 views
0

在Ruby 1.8中,如何刪除其中某些子目錄以'。'開頭的目錄樹?如何使用.directories清空目錄

例如,我有一個我想清除的嵌入式Linux文件系統目錄。其子目錄之一是./dev/.udev/files。

Dir[ "{**/*,**/.**,**/.*}" ].sort.reverse.each do | p | 
    puts p 
    if ((p != '..') and (p != '.')) then 
     if File.directory? p then 
      Dir.rmdir p 
     else 
      File.delete p 
     end 
    end 
end 

這可以識別./dev/.udev/,但它不會刪除.udev下的文件(或文件和目錄)。

我意識到,我可能是殘酷的,並從工作目錄執行

system("rm -Rf *") 

,但我想了解通配符的方法更好。

在此先感謝! :d

回答

0

你可以嘗試

Dir.glob(".[^.]*") 

對於刪除的目錄,你可以嘗試先刪除該目錄下的所有文件,然後執行刪除,或者您可以使用FileUtils.rm_rf。請參閱FileUtils文檔以獲取更多信息

+0

Dir []。sort.reverse旨在首先在它們所在的目錄之前列出最深的文件。除了glob模式**和*不接受文件或以其開頭的目錄。 – 2010-10-07 20:18:00

+0

感謝您對FileUtils的建議;這比系統()更清潔。 :d – 2010-10-07 20:18:54