Directory

從目錄中刪除文件:記憶體耗盡

  • August 3, 2012

這個問題是報告“參數列表太長”時如何從目錄中刪除所有文件的邏輯延續

我有

drwxr-xr-x  2 doreshkin doreshkin 198291456 Apr  6 21:35 session_data

我試過了

find session_data -type f -delete
find session_data -type f | xargs rm -f
find session_data -maxdepth 1 -type f -print0 | xargs -r0 rm -f

結果是一樣的:

find: memory exhausted

我該怎麼做才能刪除這個目錄?

這聽起來像一個問題find。我注意到一些關於人們在使用特定版本的 GNU findutils 時遇到該錯誤的錯誤報告。

您可以嘗試將“find”替換為“ls”和“grep”。像這樣的東西:

cd somedir
\ls -f | grep "something" | xargs -d "\n" rm

\ls相反,反斜杠ls告訴 bash 忽略任何會影響輸出格式的別名。你也可以說/bin/ls如果你忘記了反斜杠把戲。該-f選項告訴它禁用排序(這可以節省時間/記憶體)並包含隱藏文件。xargs的-d "\n"參數告訴它在換行符而不是空格上拆分。請注意,-d並非所有版本的 xargs 都支持這一點,這很遺憾。

請注意,這是ls something*行不通的,因為它something*是在 bash 中擴展的,而不是通過 ls 擴展的,並且會導致“參數列表太長”錯誤。這就是您通過 grep 管道傳輸結果的原因。

引用自:https://serverfault.com/questions/129843