Rsync

rsync 包含/排除名稱中具有連續數字的文件

  • April 2, 2018

我在src rsync伺服器中有這樣的文件:

p4.1

p4.2

p4.3 

依此類推p4.67

現在我需要下載其中的一些。不是全部,而是從一些開始的,即我希望從p4.42to下載p4.67並避免下載第一個。這將由 bash 腳本完成,該腳本會發現目前dst文件編號並為rsync. 我現在看到的唯一解決方案是使用 of 的蹩腳解決方案,--include-from=FILE但這意味著我需要FILE通過 bash 腳本生成並將其從驅動器中刪除。想知道是否有更有效和優雅的解決方案使用rsync PATTERN.

組合seq(生成具有所選格式的範圍-f)和--include-from=-(讀取stdin)的可能解決方案:

$ ls src/
p.4.31  p.4.32  p.4.42  p.4.45  p.4.46  p.4.54
$ ls dst
$ seq -f "p.4."%g 42 46 | rsync src/* dst/ --include-from=- --exclude=* -v
p.4.42
p.4.45
p.4.46

sent 183 bytes  received 86 bytes  538.00 bytes/sec
total size is 0  speedup is 0.00
$ ls dst/
p.4.42  p.4.45  p.4.46

處理它的另一種方法是使用NUL 分隔 printf,如下所示:

rsync -0 --include-from=<(printf 'p4.%d\0' {42..67}) .

引用自:https://unix.stackexchange.com/questions/434910