源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2020-12-10 14:42 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Linux shell ftp命令根据文件日期下载文件的方法
需求:ftp获取远程数据的文件,根据文件的创建时间点下载文件。 可以自行扩展根据文件的大小等其他需求。 [b]知识点总结:[/b] 1、获取文件的时间: [code]ls -lrt|awk '{print $6" "$7" "$8}'[/code] 时间内容: [code]Sep  8 16:03[/code] 2、时间格式转换 [code]date -d "Sep 8 16:03" +%Y%m%d%H%M[/code] 转换结果: 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
[b]总结[/b] 以上所述是小编给大家介绍的Linux shell ftp命令根据文件日期下载文件的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对编程素材网网站的支持!
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部