rsyncは、パターンと一致するサブディレクトリの下流にファイルを繰り返しコピーします。

rsyncは、パターンと一致するサブディレクトリの下流にファイルを繰り返しコピーします。

私はrsyncに最初に触れ、次のようにかなり深いディレクトリを持っています:

source
  |
  +--foo
  |   |
  |   +--bar1
  |   |   | 
  |   |   +--bla (more dirs down the line)
  |   +--bar2
  |   |   |
  |   |   +--... 
  |   +--bar3
  |       |
  |       +--bla (more dirs down the line)
  ...

これで、フルパスをブラウズ/検索し、blaディレクトリの内側/背面(つまりblaのサブディレクトリ)にあるすべてのcsvファイルを再帰的にコピーしようとしています。ここでいくつかの文書や記事を読んだ後、次のような気がしました。

rsync -ravm --include='/**/bla/' --include='*.csv' --exclude='*' source/ . 

トリックを実行する必要がありますが、包含と除外の組み合わせを試しても、どこからでもすべてのCSVをコピーしたり、何もコピーしたりすることはありません。

ここで私が見ていないものは何ですか?どんな助けでも大変感謝します。

私はbash 4.3.48とrsync 3.1.1を使用しています。

ベストアンサー1

これはトリックを行うようです

rsync -avm --include='*/' --include='foo/*/bla/**.csv' --exclude='*' source/ .

または

rsync -avm --include={'*/','foo/*/bla/**.csv'} --exclude='*' source/ .
  • --exclude='*'すべてのファイルを除外
  • --include='*/'ディレクトリを含める
  • --include='foo/*/bla/**.csv'blaディレクトリの内部または下に* .csvファイルを含める(常にディレクトリの下にある場合は
    相対ファイル--include='bla/**.csv'も機能します)blafoo/barX

-rこのオプションはすでに含まれており、-aこのオプションは-m私たちが見つけることができる空のディレクトリを削除するので削除されました。

おすすめ記事