如何删除上个月1号之前的文件

如何删除上个月1号之前的文件

我有一个脚本在每个月的 1 号运行。在此脚本中,我想删除上个月第一天之前修改的所有文件。例如。该脚本将于 3 月 1 日运行。我想删除 2 月 1 日之前创建的所有文件。这可能吗?

答案1

使用 shell 脚本:

#!/bin/sh

dir_to_check='/root/temp/somedir'

last_month=$(date -d "-1 month -$(($(date +%d)-1)) days" +%Y-%m-%d)

find "$dir_to_check" ! -newermt "$last_month" -type f -exec rm {} \;

dir_to_check='/root/temp/somedir'用于搜索文件的目录(希望您没有尝试删除全部上个月之前创建的计算机上的文件)。

last_month=$(date -d "-1 month -$(($(date +%d)-1)) days" +%Y-%m-%d)- 将变量设置为上个月的第一天。

find "$dir_to_check" ! -newermt "$last_month" -type f -exec rm {} \;- 搜索修改日期早于上个月第一天的所有文件并将其删除。

答案2

按创建时间查找文件并不是最简单的,但也许上次修改或上次访问的文件也适合您?

最简单但最不准确的方法是运行查找并选择 31 天或更早修改的所有文件。然后,您可以处理 find 生成的文件列表或在 find 命令中执行删除:

  • 查找最近更改的文件超过 31 天前:find <dir> -type f -mtime +31
  • 查找并删除最近更改时间超过 31 天的文件:find <dir> -type f -mtime +31 -exec rm {} \;

要决定访问时间,只需替换-mtime-atime

要查找 X 天前创建的文件,您可以使用-newerBt <creation_date>(版本 4.3.3 及更高版本)。该格式可以适应使用访问、修改或改变标准。

  • 查找 2018 年 1 月 1 日之前创建的文件:find <dir> -type f -newerBt 2018-01-01

相关内容