Linux shell ftp命令根据文件日期下载文件的方法
需求:ftp获取远程数据的文件,根据文件的创建时间点下载文件。可以自行扩展根据文件的大小等其他需求。
知识点总结:
1、获取文件的时间:
ls-lrt|awk'{print$6""$7""$8}'
时间内容:
Sep 816:03
2、时间格式转换
date-d"Sep816: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|getlinefiletime;if(filetime>'$checktime')print$9;}
获取文件的时间,对时间进行转换,然后对转换后的时间与给定的$checktime进行比较,如果比$checkime的时间大,则显示文件名。
|getline为执行命令获取命令执行的结果。
以上就完成了对本地文件时间进行比较的方法。接下来判断远程主机的文件时间。
5、ftp命令登录远程主机,并过滤得到要查询的文件内容
ftp_cmd(){ ftp-i-n<'$checktime')print$9;}'|xargs)
通过函数调用实现ftp到指定主机,cd到指定目录,通过awk获取ls-lrt的结果,然后计算时间,把大于指定时间的文件名获取到。
6、下载文件
ftp_cmdmget$files
总结
以上所述是小编给大家介绍的Linuxshellftp命令根据文件日期下载文件的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!