首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >scp shell脚本中模式filename_date在两个日期之间的所有日志文件

scp shell脚本中模式filename_date在两个日期之间的所有日志文件
EN

Stack Overflow用户
提问于 2016-08-31 11:36:32
回答 1查看 1.3K关注 0票数 0

我的日志文件是upd_yyyymmdd_slr.stats格式的。例如,我希望在两个日期之间将所有文件从服务器复制到本地服务器。

我希望日志文件中的所有文件都有日期,因为2015122820160103意味着我希望从一组多个文件中复制以下文件。

代码语言:javascript
复制
upd_20151228_slr.stats
upd_20151229_slr.stats
upd_20151230_slr.stats
upd_20151231_slr.stats
upd_20160101_slr.stats
upd_20160102_slr.stats
upd_20160103_slr.stats

我正在使用下面的命令,但它不起作用

代码语言:javascript
复制
 scp server:/reports/logs/upd_20[15-16][12-01][29-03]*slr* ./log_files

请找到我在Linux和shell脚本中所能做的最好的方法。

EN

回答 1

Stack Overflow用户

发布于 2016-08-31 12:27:32

请查看此脚本:

代码语言:javascript
复制
#!/bin/bash

for i in `ls upd_*_slr.stats`; do 
  # First strip off prefix and suffix strings.
  s=`echo $i | sed 's/upd_//g' | sed 's/_slr.stats//g'`
  if [[ $s -ge 20151230 && $s -le 20160102 ]]; then # Modify dates as needed 
    echo $i
    cp $i /path/to/dest/dir
  fi
done

编辑:

在远程服务器的情况下,可以尝试这样做:

代码语言:javascript
复制
#!/bin/bash

for i in `ssh username@remoteaddress ls /path/to/dir/upd_*_slr.stats`; do 
  i=${i##*/}
  # First strip off extra strings leaving only date.
  s=`echo $i | sed 's/upd_//g' | sed 's/_slr.stats//g'`
  if [[ $s -ge 20151230 && $s -le 20160102 ]]; then # Modify dates as needed 
    echo $i
    scp username@remoteaddress:/path/to/dir/$i /path/to/dest/dir
  fi
done
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39248577

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档