rsync 包含/排除名称中带有连续数字的文件

rsync 包含/排除名称中带有连续数字的文件

我在src rsync服务器中有这样的文件:

p4.1

p4.2

p4.3 

依此类推直至p4.67

现在我需要下载其中一些。不是全部,而是从一些起始的开始,即我希望从p4.42到下载p4.67并避免下载第一个。这将通过 bash 脚本完成,该脚本会发现当前dst文件编号并为rsync.我现在看到的唯一解决方案是使用的蹩脚解决方案--include-from=FILE,但这意味着我需要FILE通过 bash 脚本生成并将其从驱动器中删除。希望知道是否有更有效和优雅的解决方案使用rsync PATTERN.

答案1

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

答案2

另一种处理方法就是使用NUL 分隔 printf如下:

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

相关内容