我試圖刪除位於一個單獨的目錄大約十億的文件在Linux下使用此命令:如何從linux上的單個目錄中刪除10億個文件?
# rm /test/*.mp3
但執行是錯誤此消息:
-bash: /bin/rm: Argument list too long
我怎樣才能解決這個問題?
我試圖刪除位於一個單獨的目錄大約十億的文件在Linux下使用此命令:如何從linux上的單個目錄中刪除10億個文件?
# rm /test/*.mp3
但執行是錯誤此消息:
-bash: /bin/rm: Argument list too long
我怎樣才能解決這個問題?
我經常使用的形式
find /test/ -name '*.mp3' -delete
的東西這樣反過來要處理的每個文件,而不是水珠試圖列出所有的文件作爲參數傳遞給rm命令。
比你,這有助於我 – Dmitry
xargs
通常對生成合理大小的參數列表很有幫助;嘗試
ls -1 /test/*.mp3 | xargs rm
這將參數批處理在一起,但避免了創建太長的命令調用無法處理。
另一個流行最喜歡的是 「find temp -name "*.mp3" -exec rm {} \;
」
裏面的文件是的,如果你的系統超過5年,你必須使用'-exec'代替'-delete',或者沒有使用GNU'find'。 '-delete'是一個相對較新的發明,在其他'find'實現中並不存在。 –
避免在大很多的文件一個單一的平面目錄。使用像'/ test/d1/f0001.mp3'這樣的子目錄...'/ test/d99/f9901.mp3' –
...不僅僅是因爲它會導致這樣的問題。許多文件系統的性能很差,每個目錄有數以萬計的文件。 –