file=FILENAME} NR!=FNR &amp&amp FNR==1{if(tmp_date&lt$"og:type" content="webpage">file=FILENAME} NR!=FNR &amp&amp FNR==1{if(tmp_date&lt$" /> file=FILENAME} NR!=FNR &amp&amp FNR==1{if(tmp_date&lt$"> Linux查找含关键字的文件比较第一行的日期读取最新的一个并且输出_系统运维_内存溢出

阅读 10

Linux查找含关键字的文件比较第一行的日期读取最新的一个并且输出,第1张

awk 'NR==FNR && FNR==1 {tmp_date=$0file=FILENAME} NR!=FNR && FNR==1{if(tmp_date<$0){tmp_date=$0file=FILENAME}} END{print "Date:"tmp_date"\nFile:"file}'  `ls -R ./*keyword* 2>/dev/null` 说明:程序有点局限性,要求所有文件

的第一个行都需要为日期(格式如:20140303)。

若所有文件的第一行都是很规整的,如XXX 20140303 #####,也可以将程序的中$0替换为日期对应的字段,如说明中的日期在第二个字符,则替换为$2。

#include <stdio.h>

#include <time.h>

int

main ()

{

struct tm tm, tm2

char buf[255]

time_t t1, t2

strptime ("Thu Feb 5 13:12:18 EST 2009", "%a %b %d %H:%M:%S EST %Y", &tm)

strptime ("Fri Feb 6 13:11:18 EST 2009", "%a %b %d %H:%M:%S EST %Y", &tm2)

t1 = mktime(&tm)

t2 = mktime(&tm2)

printf("TIME: %ld, %ld, %ld\n", t2, t1, t2-t1)

return 0

}使用date命令加上合适的时间

格式化字符串(+%s),会显示当前时间(或-d参数指定的时间)与1970-01-01 00:00:00相差的秒数(详细可以参考date的man手册) 所以基本想法就是使用date命令分别获取

当前时间与文件修改时间的秒数,然后看这2个秒数之间是否有相差180秒以上。

获取当前时间比较简单,直接date +%s就ok了

下面看看如何获取文件时间

使用stat 命令后面跟一个文件名可以获取文件的状态,包括文件修改时间。其中文件修改时间会单独一行显示,格式如下:Modify: 2013-02-21 17:58:05.404876407 +0800 (具体的精度可能系统不同略微有些差别,但大致格式是这样)

所以我们可以stat myfilename | grep Modify来获取文件的修改时间的信息,然后通过awk分别获取时间的日期和时间段

stat myfilename | grep Modify | awk '{print $2}'  #这句获取了日期段,即上面例子里面的2013-02-21

stat myfilename | grep Modify | awk '{split($3,var,".")print var[1]}' #这句获取了时间段,即上面例子里面的17:58:05,具体关于awk的使用可以参考awk的使用手册

那么现在可以获取文件修改时间与1970-01-01 00:00:00相差的描述了,就是date -d "$file_date $file_time" +%s

那么这个时间与当前时间想减的结果与180相比就可以知道是否满足条件了,满足条件的话就可以执行相应的命令。

参考代码如下:

current_datetime=`date +%s`

filedate=`stat tt.txt | grep Modify | awk '{print $2}'`

filetime=`stat tt.txt | grep Modify | awk '{split($3,var,".")print var[1]}'`

file_datetime=`date -d "$filedate $filetime" +%s

timedelta=`expr $current_datetime - $file_datetime`

if [ "$timedelta" -gt "180" ]then

echo "match condition"


fi

欢迎分享,转载请注明来源:

内存溢出

原文地址:

http://outofmemory.cn/yw/6251333.html
修改
(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
元旦打一字 元旦打一字 一级用户组
LINUX查看文件属性命令是什么?
上一篇
2023-03-19
Linux网速慢问题解决之——配置DNS
2023-03-19

发表评论
请登录后评论... 登录
提交

    评论列表(0条)
保存
{label} {label} file=FILENAME} NR!=FNR &amp&amp FNR==1{if(tmp_date&lt$', author : '元旦打一字', cat_name : '系统运维', time_y_m : '2023年03月', time_d : '19', site_motto : '内存溢出' }; {script} {script}