rsync名に連続した数字を含むファイルを含める/除外する

rsync名に連続した数字を含むファイルを含める/除外する

src rsyncサーバーには次のファイルがあります。

p4.1

p4.2

p4.3 

などp4.67

今、それらのいくつかをダウンロードする必要があります。すべてではありませんが、いくつかの開始項目から始めます。つまり、p4.42からダウンロードp4.67し、最初のアイテムをダウンロードしようとしません。これは現在のdstファイル番号を見つけて生成するbashスクリプトを介して行われますrsync。今私が見ることができる唯一の解決策は、を使用する不都合なソリューションですが、--include-from=FILEこれはFILEbashスクリプトを介して作成し、ドライブから削除する必要があることを意味します。 。より効率的でエレガントなソリューションが利用可能かどうかを知りたいです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}) .

関連情報