Ubuntu:列出特定时刻发出的所有文件

时间:2015-02-09 15:49:44

标签: unix unix-timestamp

如何获取每小时第18分钟发出的文件列表?

找到了这个但它列出了特定时间戳之后的所有文件。我只想要在一小时的第18分钟发出的文件。

find . -newermt 'Feb 9' 

1 个答案:

答案 0 :(得分:1)

假设您正在寻找特定小时的第18分钟(假设是第12小时),您可以这样做:

find . -newermt "Feb 9 12:17:59" -not -newermt "Feb 9 12:19:00"

假设您正在寻找当天任何小时的第18分钟,您可以这样做:

find . -newermt "Feb 9" -not -newermt "Feb 10" -print0 |xargs -0 \
  ls -ld --full-time |awk -F : '$2 == 18'

ls --full-time是一个GNU扩展,但是你说你在Ubuntu上,所以它支持你。如果你想要的时间在过去的几个月内,没有那个标志你就没事了(只要ls没有用年份替换时间。)同样,find -newermt仅在GNU和BSD实现中可用。否则,您可能必须计算分钟并使用{{1} }。)

我还假设-mmin是您正在寻找的时间类型。正如对该问题的评论中所述,您对-newermt的使用尚不清楚。 originated将按修改时间进行搜索,因此您可能需要-newermt作为文件的“出生时间”。有关进一步说明,请参阅man find-newerBt部分。


更加可移植的版本,不依赖于GNU或BSD扩展,虽然依靠newerXY reference来计算确切的所需年龄(以分钟为单位),但是:

perl

Time::Local::timelocal的语法是find . -mmin `perl -MTime::Local -we '$_ = time - timelocal(0,18,12,9,1,2015); printf "%.0f", $_ / 60'` 。请注意,月份是一次性的,因此2月是timelocal(sec,min,hour,day,month-1,year),因为Jan是1。这可能有一些舍入错误,因此最好自己运行perl行,然后使用它的范围(例如,给定perl返回288,尝试0)。