shell find -delete“目录不为空”

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:[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; ...

相关内容