shell脚本删除文件

shell脚本删除文件

我正在尝试删除超过六天的文件,然后记录被删除的文件。
迄今为止。

在一个sh文件中,我得到了以下内容;

find /home/pi/ftp/upload -type f -mtime +6 -exec rm {} +

然后内sudo crontab

59 23 * * * /home/pi/scripts/cullftp.sh > /var/log/ftp/`date +\%Y-\%m-\%d-\%H\%M\%S`-cull.log 2>&1

但是当它在午夜运行时,只会创建一个空文件,并且不会删除任何文件。

尽管这部分代码有效:

find /home/pi/ftp/upload -type f -mtime +6

解决这个问题的最佳方法是什么。

答案1

1)确保脚本文件是可执行的,并且具有正确的 hashbang 行(#!/bin/sh#!/bin/bash类似的行),但如果它不可执行,您应该会收到错误。

2)find ... -exec rm不会打印任何内容,您需要明确告诉find打印文件名,例如 find ... -exec rm + -print或者find ... -delete -print如果您find支持-delete.

3) 至少在 GNU find 上,-mtime +6有一些有趣的舍入。它首先将时间向下舍入为全天(24 小时周期),然后查看结果时间是否严格大于 6。结果是它仅匹配至少 7*24 小时前的文件。使用类似的东西-mmin +8640会减轻影响。 (6 天 * 24 小时/天 * 60 分钟/小时 = 8640 分钟)

相关内容