解析rsync -i输出以仅显示传输的文件名,大小,速度和时间

时间:2018-02-27 10:21:16

标签: bash awk grep rsync

我想从rsync -i中仅提取转移的内容:

  • 文件名
  • 尺寸
  • 速度
  • 持续时间

我正在使用此命令:

rsync -e ssh --rsync-path="sudo rsync" -azih --progress --delete-after
--delete-excluded --exclude=".*" --exclude=".*/" "$local_dir" "$host":"$remote_path" | egrep -A1 '<'

这已经输给我这样的东西:

 <f.stpog... tools/file.sh
         22,561 100%   20.85MB/s    0:00:00 (xfr#1, to-chk=0/6)

所以,想法是获得这样的单行输出:

tools/file.sh 22,561 100% 20.85MB/s 0:00:00

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您最好的选择可能是使用xargscut的组合。

rsync -e ssh --rsync-path="sudo rsync" -azih --progress --delete-after --delete-excluded --exclude=".*" --exclude=".*/" "$local_dir" "$host":"$remote_path" | egrep -A1 '<' | xargs -n8 | cut -d' ' -f2-6

xargs -n8会将您的输出拆分为每行只有8个项目(假设这已知且一致),cut -d' ' -f2-6将打印第二个到第六个字符。在带有输出的测试文件上,这可以正常工作。

$ cat testrsync
<f.stpog... tools/file1.sh
        22,561 100%   20.85MB/s    0:00:00 (xfr#1, to-chk=0/6)
<f.stpog... tools/file2.sh
        21,230 100%   21.22MB/s    0:00:00 (xfr#1, to-chk=0/6)
<f.stpog... tools/file3.sh
        43,340 100%   20.34MB/s    0:00:00 (xfr#1, to-chk=0/6)

$ cat testrsync | xargs -n8 | cut -d' ' -f2-6
tools/file1.sh 22,561 100% 20.85MB/s 0:00:00
tools/file2.sh 21,230 100% 21.22MB/s 0:00:00
tools/file3.sh 43,340 100% 20.34MB/s 0:00:00