我正在尝试删除超过六天的文件,然后记录被删除的文件。
迄今为止。
在一个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 分钟)