Shell
shell find -delete ‘目錄不為空’
我嘗試刪除 Synology NAS 上超過 30 天的備份文件。這些文件位於從我的網路伺服器下載備份文件期間創建的目錄中。
下載後,我想檢查 -mtime 然後刪除舊文件。
腳本來了:
#!/bin/sh ## Datum auslesen datum=`date +%Y-%m-%d_%H-%M` ## Mit wget die Datei AutoBackupDB-1.zip laden und in einem Ordner mit Datum uns Uhrzeit speichern wget -m -P /volume1/Austauschordner/backup_xyz/$datum/ ftp://backup:backup@domain.tdl/AutoBackupDB-1.zip echo "Backup von xyz wurde erstellt! " ## finde alle Ordner in einem angegebenen Verzeichnis mit dem Suchnamen die älter als die angegebenen Tage sind und lösche diese find /volume1/Austauschordner/ -type d -name 'backup_*' -ctime +30 -delete
如果我執行此腳本,它會告訴我“目錄不為空”,並且不會刪除任何內容。
是否有一種簡單的方法或選項可以刪除目錄中的所有內容?
正如@Stephen Kitt 所提到的,這在很大程度上是find -delete does not delete non-empty directory的副本,它聲明您告訴它刪除目錄,但目錄不是空的(就像沒有執行
rm some_nonempty_directory
就無法工作一樣-r 標誌至少)。話雖如此,如果您替換
-delete
為-exec rm -rv {} +
or-exec rm -rv {} \;
然後您的腳本應該遞歸地刪除目錄而不會出錯(v
如果您不想要詳細輸出,請在測試後刪除該標誌)。注意:最後的會
+
導致rm -rv file1 file2 ...
while的動作\;``rm -rv file1; rm -rv file2; ...