2012-09-19 64 views
1

我試圖刪除位於一個單獨的目錄大約十億的文件在Linux下使用此命令:如何從linux上的單個目錄中刪除10億個文件?

# rm /test/*.mp3 

但執行是錯誤此消息:

-bash: /bin/rm: Argument list too long 

我怎樣才能解決這個問題?

+1

避免在大很多的文件一個單一的平面目錄。使用像'/ test/d1/f0001.mp3'這樣的子目錄...'/ test/d99/f9901.mp3' –

+0

...不僅僅是因爲它會導致這樣的問題。許多文件系統的性能很差,每個目錄有數以萬計的文件。 –

回答

4

我經常使用的形式

find /test/ -name '*.mp3' -delete 

的東西這樣反過來要處理的每個文件,而不是水珠試圖列出所有的文件作爲參數傳遞給rm命令。

+0

比你,這有助於我 – Dmitry

1

xargs通常對生成合理大小的參數列表很有幫助;嘗試

ls -1 /test/*.mp3 | xargs rm 

這將參數批處理在一起,但避免了創建太長的命令調用無法處理。

0

試試這個(我在iPad上,但使用Linux很多)

從/,執行

# rm -rf test 
+0

我不需要刪除目錄,只有 – Dmitry

1

另一個流行最喜歡的是 「find temp -name "*.mp3" -exec rm {} \;

+0

裏面的文件是的,如果你的系統超過5年,你必須使用'-exec'代替'-delete',或者沒有使用GNU'find'。 '-delete'是一個相對較新的發明,在其他'find'實現中並不存在。 –