rm -r cache/*.mat 發生錯誤 bash: /usr/bin/rm: Argument list too long

 

 


你遇到的錯誤:

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

代表 cache/*.mat 展開後檔案太多,超過系統允許的最大指令長度。


✅ 解法 1:用 find(最推薦)

這種情況 必須用 find,因為 find 是「逐一處理檔案」,不會有 argument too long 的問題。

刪除全部 .mat

find cache -name "*.mat" -type f -delete
或:
find cache -name "*.mat" -type f -exec rm {} \;

✅ 解法 2:只清空整個資料夾(如果你確定可刪光)

如果 cache/ 裡只有你要刪的資料:

rm -rf cache/*

⚠️ 注意:仍可能在檔案爆量時失敗,取決於 shell 展開。


✅ 解法 3:使用 xargs(安全、快速)

find cache -name "*.mat" -print0 | xargs -0 rm
-print0-0 會安全地處理檔名中包含空格或特殊字元。

建議哪一個?

你應該用這個:

find cache -name "*.mat" -type f -delete
最乾淨、最快、最安全、不會有 too long 問題。