Files
使用 for 循環刪除目錄中的所有內容
我正在嘗試使用從我的伺服器中刪除大量郵件(主要是郵件傳遞失敗)
rm -rf /home/*/mail/new/*
我得到
-bash: /usr/bin/rm: Argument list too long
我嘗試使用查找
find /home/*/mail/new/ -mindepth 1 -delete
但 20 分鐘後,它似乎什麼也沒做。
如何使用 for 循環刪除其中的所有內容(目錄、文件、點文件)
/home/*/mail/new/
像這樣的東西
for f in /home/*/mail/new/*.*~; do # if it is a file, delete it if [ -f $f ] then rm "$f" fi done
請幫我重寫此命令以刪除文件和文件夾以及其中的所有內容
/home/*/mail/new/
編輯:我的問題是獨一無二的,因為它是關於在 FOR 循環中這樣做的。
問題是
/home/*/mail/new/*
擴展到太多文件名。最簡單的解決方案是刪除目錄:rm -rf /home/*/mail/new/
或者,使用您的
find
命令。它應該工作,它只會更慢。或者,如果您需要
new
目錄使用循環來查找它們,刪除並重新創建它們:for d in /home/*/mail/new/; do rm -rf "$d" && mkdir "$d" done
您嘗試編寫的循環(但不要使用它,它非常緩慢且效率低下)類似於:
for f in /home/*/mail/new/* /home/*/mail/new/.*; do rm -rf "$f" done
如果要刪除所有內容,則無需測試文件,只需使用
rm -rf
和目錄和文件都可以通過同一命令刪除。它會抱怨不能刪除.
,..
但你可以忽略它。或者,如果您想要超級乾淨並避免錯誤,您可以在 bash 中執行此操作:shopt -s dotglob for f in /home/*/mail/new/*; do rm -rf "$f" done