广告
返回顶部
首页 > 资讯 > 操作系统 >Linux shell ftp命令根据文件日期下载文件的方法
  • 487
分享到

Linux shell ftp命令根据文件日期下载文件的方法

文件命令日期 2022-06-04 21:06:34 487人浏览 泡泡鱼
摘要

需求:ftp获取远程数据的文件,根据文件的创建时间点下载文件。 可以自行扩展根据文件的大小等其他需求。 知识点总结: 1、获取文件的时间: ls -lrt|awk '{print $6" "$7" "$8}

需求: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的时间大,则显示文件名。

|getline 为执行命令获取命令执行的结果。

以上就完成了对本地文件时间进行比较的方法。接下来判断远程主机的文件时间。

5、ftp命令登录远程主机,并过滤得到要查询的文件内容


ftp_cmd(){
ftp -i -n <<!
open $ftp_ip
user $get_user $get_pwd
binary
cd ${get_dir}
lcd ${local_dir}
$*
bye
!
}
pattern="${month}.*.dat$"
files=$(ftp_cmd ls -lrt |awk '$9 ~ /'$pattern'/ { 
ctime="date -d ""$6" "$7" "$8"" +%Y%m%d%H%M";  
ctime|getline filetime; if( filetime > '$checktime' ) print $9 ; }'|xargs)

通过函数调用实现ftp到指定主机,cd到指定目录,通过awk获取ls -lrt的结果,然后计算时间,把大于指定时间的文件名获取到。

6、下载文件


ftp_cmd mget $files

总结

以上所述是小编给大家介绍的linux shell ftp命令根据文件日期下载文件的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对编程网网站的支持!

--结束END--

本文标题: Linux shell ftp命令根据文件日期下载文件的方法

本文链接: https://www.lsjlt.com/news/18595.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作