我想从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
有什么想法吗?
答案 0 :(得分:0)
您最好的选择可能是使用xargs
和cut
的组合。
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