我的日志文件格式为upd_yyyymmdd_slr.stats
。我想在两个日期之间将所有文件从服务器复制到本地服务器,例如。
我希望所有日志在日志文件中的文件为20151228
,而20160103
表示我想从一组许多文件中复制以下文件。
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
我正在使用以下命令,但它无效
scp server:/reports/logs/upd_20[15-16][12-01][29-03]*slr* ./log_files
请找到我在Linux和shell脚本中可以做的最好方法
答案 0 :(得分:0)
Check out this script:
#!/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
EDIT:
In case of a remote server one could try this:
#!/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