需求:ftp获取远程数据的文件,根据文件的创建时间点下载文件。 可以自行扩展根据文件的大小等其他需求。
知识点总结:
1、获取文件的时间:
ls -lrt|awk '{print $6" "$7" "$8}'
时间内容:
Sep 8 16:03
2、时间格式转换
date -d "Sep 8 16:03" +%Y%m%d%H%M
转换结果:
201709081603
3、指定文件名,正则匹配
pattern="${month}dat$"
ls -lrt |awk '$9 ~ /'$pattern'/ {print $6" "$7" "$8}'
注意awk里面模式变量用' '括起来,为任意字符,$表示以dat结尾。pattern的内容根据需求自行设定
4、对文件时间进行比较
ls -lrt |awk '$9 ~ /'$pattern'/ {\
ctime="date -d \""$6" "$7" "$8"\" +%Y%m%d%H%M"; \
ctime|getline filetime; if( filetime > '$checktime' ) print $9 ; }
获取文件的时间,对时间进行转换,然后对转换后的时间与给定的$checktime进行比较,如果比$checkime的时间大,则显示文件名。
while read line;do date -d `echo $line | awk '{print $5}'` +%s ;done <123tmp;
可以用上面的脚本试一下。循环读取123tmp这个文件 直接输出utc 到现在的秒数
你好!
find /目录 |xargs grep "文件内的关键字" |awk -F ":" '{print$1}' |uniq |xargs head -1 |sed '/==/{N;s/\n/\t/}' |sed /^$/d |sort -r -k 4 |head -1|awk '{print$2}' |pwd
我水平不够
只能写成这样的
默认你文件第一行只有日期
没有其他字符
如有疑问,请追问。
这个问题我觉得用 awk 比较好实现。我试了一个,不过没找到怎么直接处理这个非数字的月份问题,使用数组来做了一个转换,所以脚本长了一点。
下面是用 message 日志来做的测试,你可以换成你的日志文件来测试看看效果。
你可以更改 time_period 的值来达到想要其它时间内的日志。
# awk -F'[ :]+' 'BEGIN{time_period=53600; mon["Jan"] = 1; mon["Feb"] = 2; mon["Mar"] = 3; mon["Apr"] = 4; mon["May"] = 5; mon["Jun"] = 6; mon["Jul"] = 7; mon["Aug"] = 8; mon["Sep"] = 9; mon["Oct"] = 10; mon["Nov"] = 11; mon["Dec"] = 12; now=systime();}; now - mktime("2013 " mon[$1] " " $2 " " $3 " " $4 " " $5) <= time_period {print}' messagesAug 13 05:15:01 test ntpdate[26717]: the NTP socket is in use, exiting
Aug 13 05:25:01 test ntpdate[26782]: the NTP socket is in use, exiting
Aug 13 10:05:01 test ntpdate[29013]: the NTP socket is in use, exiting
Aug 13 10:10:01 test ntpdate[29076]: the NTP socket is in use, exiting
cd /var/>
是英语String from time的意思,就是说把给出的UNIX时间戳转换成可读的时间字符串输出:
o@t:~/tmp$ awk 'BEGIN{
print strftime("%Y %m %d %H:%M:%S", 132)
}'
1970 01 01 07:32:12
o@t:~/tmp$ awk 'BEGIN{
print strftime("%Y %m %d %H:%M:%S", 1324)
}'
1970 01 01 07:52:04
o@t:~/tmp$ awk 'BEGIN{
print strftime("%Y %m %d %H:%M:%S", 13245)
}'
1970 01 01 11:10:45
o@t:~/tmp$ awk 'BEGIN{
print strftime("%Y %m %d %H:%M:%S", 0)
}'
1970 01 01 07:30:00
一般配合systime()函数使用,例如,打印当前时间:
o@t:~/tmp$ awk 'BEGIN{
print strftime("%Y %m %d %H:%M:%S", systime())
}'
2017 01 18 11:54:12
以上就是关于ftp下载原文件时间全部的内容,包括:ftp下载原文件时间、如何在linux系统使用awk把文本里面时间转换成累积的秒数、Linux查找含关键字的文件比较第一行的日期读取最新的一个并且输出等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)