有一个进程每半小时创建一次文件。我想删除超过 7 天的文件。
但是当我运行此命令时,它会删除距当前运行时间戳超过七天的文件,但我不想按时间戳删除,我只想删除在那天或之前创建的所有文件。
命令:
find <file_path> -mtime +6 -name 'sample_file01*.txt' -delete
如果我在 2018 年 11 月 9 日 11:30 运行此命令,它将删除 2018 年 11 月 2 日 11:00 及之前的文件。我只想删除 2018 年 11 月 2 日的所有文件。
我应该使用不同的命令还是对上面的查找命令进行一些修改?
谢谢,阿迪亚
答案1
在 Ubuntu 18.04 上,find
有一个-daystart
选项可以让你做你想做的事情:
find <file_path> -daystart -mtime +5 -name 'sample_file01*.txt' -delete
您需要将所需范围的天数减少一天。
如果您没有此选项(例如在 OSX 上),您可以使用-mmin
:
secsnow=$(date +%s)
minstoday=$(($secsnow%86400/60))
minsago=$((5*1440+$minstoday))
find <file_path> -mmin +$minsago -name 'sample_file01*.txt' -delete
我分阶段展示了这一点,以便算术清晰,但它可以用一个算术表达式作为参数来完成:
... -mmin $(($(date +%s)%86400/60+5*1440)) ...