天天看點

linux下如何删除大量小檔案

在Linux下使用 "rm -rf *" 試圖删除非常大量的小檔案時,可能會報類似下邊的錯誤:

 /bin/rm: Argument list too long.

這是因為通配符"*"在執行時會被每個比對的檔案名來替換,例如“rm -rf file1 file2 file3 file4″。

系統隻配置設定了一個比較小的緩沖區用來對這個清單進行排序,如果這個緩沖區滿了,則shell不能執行這個指令。

    為了解決這個問題,很多人使用find指令來操作。即用find查找每一個檔案,然後把檔案名一個接一個的傳遞個rm指令,形式如下:

find . -type f -exec rm -v {} \;

    辦法就是使用find指令内置的 "-delete" 參數 ,使用這種方法删除檔案,速度大概是 2000個檔案/秒,速度比之前方法得到極大提高。當然也可以加上 "-print"參數來顯示每個删除的檔案。

find . -type f -delete

find . -type d -print -delete  

   但是我不建議加這個參數,如果你要觀察删除檔案的速度,我建議使用df -i 指令來檢視indoe節點的變化情況。

本文轉自 a120518129 51CTO部落格,原文連結:http://blog.51cto.com/silencezone/1709051,如需轉載請自行聯系原作者

繼續閱讀