• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Linux shell ftp命令根据文件日期下载文件的方法

    需求: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命令根据文件日期下载文件的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

    您可能感兴趣的文章:
    • Linux ftp 命令行中下载文件get与上传文件put的命令应用详解
    • xshell上传下载文件(Windows、Linux)
    • 使用FileZilla从Linux系统下载文件的方法
    上一篇:Linux 中unzip解压时中文乱码的解决办法
    下一篇:Linux下服务器重启的脚本命令
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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