首页 > 解决方案 > Linux中的“-mtime”时间有什么替代方法吗?

问题描述

我想根据创建(或修改)日期删除特定目录中的所有文件。我知道要完成这项任务,有以下命令:

find /tmp/log -maxdepth 1 -name 'file*' -mmin +60 -type f -exec rm {} \;

问题是我使用的 OpenWrt 系统版本不支持标志 -mtime(或者 -mmin)。那么有没有其他方法可以根据日期删除文件呢?

标签: findopenwrtbusybox

解决方案


OpenWrt 似乎用 BusyBox 版本替换了大多数 Linux 命令(哎哟)(请参阅https://openwrt.org/docs/techref/busybox
根据 BusyBox 文档,当前版本确实支持-mtime,但似乎您的版本不? (我会再试一次,以确保您没有弄乱命令行)
无论如何,如何使用 BusyBox 命令完成此操作?

  • 安装新版本的 BusyBox?

  • 或安装find命令的“真实”版本

  • 或者如果此命令date -d '@946710000'打印日期 ~ 2000 年 1 月 1 日,请尝试以下操作(在 BusyBox 上测试!!):

     cur=`date "+%s"`  # current timestamp
     old=`echo $cur|awk '{print $1 - (3600*10)}'`  # 10 days ago
     for f in *;do 
       date -r "$f" "+%s^$f"  # timestamp of named file
     done |
     awk -F'^' -v "old=$old" '$1<old{print $2}'  # older?
    

(假设文件名中没有 ^)


推荐阅读