我尝试删除 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:[email protected]/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
如果我运行这个脚本,它会告诉我“目录不为空”,并且不会删除任何内容。
有没有简单的方法或选项来删除目录中的所有内容?
答案1
正如 @Stephen Kitt 提到的,这很大程度上是重复的find -delete 不删除非空目录它表明您告诉它删除目录,但目录不为空(就像rm some_nonempty_directory
至少在没有 -r 标志的情况下运行无法工作一样)。
话虽这么说,如果您替换-delete
为-exec rm -rv {} +
或-exec rm -rv {} \;
那么您的脚本应该递归地删除目录而不会出现错误(v
如果您不希望在测试后得到详细输出,请删除该标志)。
注意:+
最后的 the 将导致rm -rv file1 file2 ...
while 的操作\;
为rm -rv file1; rm -rv file2; ...