删除文件的shell脚本

Boo*_*ada 1 shell cron find

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

在一个sh文件中,我得到了关注;

find /home/pi/ftp/upload -type f -mtime +6 -exec rm {} +
Run Code Online (Sandbox Code Playgroud)

然后在 sudo crontab

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

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

虽然这段代码有效:

find /home/pi/ftp/upload -type f -mtime +6
Run Code Online (Sandbox Code Playgroud)

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

ilk*_*chu 7

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 分钟)