AIX Unix - 如何查找和删除在日期期间创建的带有开始和结束字符的文件?

AIX Unix - 如何查找和删除在日期期间创建的带有开始和结束字符的文件?

我使用的是 IBM AIX Unix,它的命令选项受到限制。我想使用 find 和 mtime (有效)选项来实现以下过滤条件。我想删除以下过滤条件列出的文件。

  • 以数字 [0-9] 开头的文件
  • 以“.dat”结尾
  • 持续时间为2018年8月1日至2018年10月15日

我尝试使用 find 命令,但没有多大帮助。

 find /mydirectory -type f -mtime -45 -mtime +5 

答案1

find命令寻找文件之类的东西上次修改内容不到 45 天前上次修改内容已超过 5 天前。 (“AND”限制数据集,而不是放大它。如果您愿意,可以将其读作“that are also”。)

假设您已匹配绝对日期范围,现在只需添加一个子句来完成您指定的一组条件:

find /mydirectory -type f -mtime -45 -mtime +5 -name '[0-9]*' -name '*.dat'

稍微优化一下,这两个命名标准

  • 以数字 [0-9] 开头的文件
  • 以“.dat”结尾

可以合并到单个语句中:

  • 匹配 glob 的文件(“shell 通配符模式”)[0-9]*.dat

最后,你需要一个“删除匹配的文件“行动,我们可以用它来实施rm -f,然后这将引导我们找到您所需的解决方案。

find /mydirectory -type f -mtime -45 -mtime +5 -name '[0-9]*.dat' -exec echo rm -f {} \;

当您看到它按照您的预期选择文件时,请记住从该命令中删除echo,以便该命令rm将被执行而不仅仅是打印

答案2

如果日期是固定的,则意味着您要删除修改日期在该范围内的文件,无论什么时候你运行命令,然后你可以使用touch命令创建参考文件和find -newer谓词限制结果:

touch -t 201807312359.59 /tmp/oldest-file
touch -t 201810152359.59 /tmp/newest-file
find /mydirectory -type f -newer /tmp/oldest-file ! -newer /tmp/newest-file -name '[0-9]*.dat' -exec rm {} \;

相关内容