gra*_*ndd 46 shell scripting find
我尝试删除 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
Run Code Online (Sandbox Code Playgroud)
如果我运行这个脚本,它会告诉我“目录不为空”并且不会删除任何内容。
是否有一种简单的方法或选项可以删除目录中的所有内容?
Jas*_*ush 65
正如@Stephen Kitt 所提到的,这在很大程度上是find -delete的副本,它不会删除非空目录,这表明您正在告诉它删除目录,但目录不是空的(就像运行rm some_nonempty_directory没有-r 标志至少)。
话虽如此,如果您替换-delete为-exec rm -rv {} +或-exec rm -rv {} \;那么您的脚本应该以递归方式删除目录而不会出错(v如果您不想在测试后进行详细输出,请删除该标志)。
注意:+最后将导致rm -rv file1 file2 ...while 动作\;将是rm -rv file1; rm -rv file2; ...