scp:如何使用过滤器从远程服务器复制文件

时间:2016-01-14 12:07:52

标签: linux shell scp

我正在尝试使用scp从远程服务器复制大型日志文件。但是我只希望远程日志文件中的行有一个字符串"失败"。 这就是我目前正在做的事情

scp user@ip:remote_folder/logfile* /localfolder

这会将以远程服务器中的logfile开头的所有文件复制到本地文件夹。这些文件非常大,我只需要复制那些日志文件中的行,其中包含字符串" Fail"来自远程服务器。任何人都能告诉我怎么做吗?我可以使用cat或grep命令吗?

2 个答案:

答案 0 :(得分:2)

ssh user@ip grep Fail remote_folder/logfile*

答案 1 :(得分:2)

在远程计算机上使用grep并将输出过滤为文件名和内容:

#!/usr/bin/env bash

BASEDIR=~/temp/log

IFS=$'\n'
for match in `ssh user@ip grep -r Fail "remote_folder/logfile*"`
do
    IFS=: read file line <<< $match
    mkdir -p `dirname $BASEDIR/$file`
    echo $line >> $BASEDIR/$file
done

您可能希望查看对IFS in combination with read的解释。