Linux find 命令-显示超过 7 天的文件-不使用时间戳

Linux find 命令-显示超过 7 天的文件-不使用时间戳

有一个进程每半小时创建一次文件。我想删除超过 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)) ...

相关内容