私はこのような質問が何十億ものあることを知っています。しかし、私はそれらをたくさん試しましたが、これがうまくいくことができなかったと確信しています。したがって、これを重複としてマークしないでください。
次のファイルシステムがあります。
1_counts/
|_________sample1/
|__________boring_file1
|__________boring_file2
|__________boring_dir1/
|__________boring_file1
|__________boring_file2
|__________dir/
|__________boring_file1
|__________boring_file2
|__________another_dir/
|__________file1
|__________file2
|__________file3
|__________boring_dir/
|__________boring_file
|__________boring_file.RData
複数の「サンプル」ディレクトリがあります。
でファイル1、2、3を同期する必要がありますanother_dir/
。ファイル構造を維持したい(ターゲットに子/ディレクトリはありません)。すべてをコピーしたくありません。
まず、すべてを次の場所に入れてみましたdir/another_dir
。
rsync -r -v --dry-run --include="dir/" \
--include="dir/another_dir/" \
--exclude="*" 1_counts/* .
メッセージを含むファイルは返されません[sender] hiding directory sample_1 because of pattern *
。同じ
rsync -r -v --dry-run --include="dir/" \
--include="dir/another_dir/***" \
--exclude="*" 1_counts/* .
このオプション(ここではソリューション1)は次のすべての項目を検索しましたdir/another_dir/
。
rsync -r -v --dry-run --include="dir/" \
--include="dir/another_dir/***" \
--exclude="*/*" 1_counts/* .
正直言って、私はそれを推測した。なぜ除外すべきかわかりません*/*
。
試してみると
rsync -r -v --dry-run --include="dir/" \
--include="dir/another_dir/" \
--exclude="*/*" 1_counts/* .
dir/another_dir
目次だけが分かり、内容はわかりません。予想通り。
もし私がするなら
rsync -r -v --dry-run --include="dir/" \
--include="dir/another_dir/*" \
--exclude="*/*" 1_counts/* .
dir/
内容はなく目次のみ出てきます。予想されると思います(2回目の回答ここanother_dir
)しかし、なぜ私が謎を得ることができないのか混乱しています。
それでも、今ソリューション1を使用して1_counts/sample1/dir/another_dir
。今Boring_file.RDataとdir/another_dir/boring_dir
。
頑張った
rsync -r -v --dry-run --include="dir/" \
--include="dir/another_dir/***" \
--exclude="*.RData" \
--exclude="boring_dir/" \
--exclude="*/*" 1_counts/* .
これはうまくいきません。すべてがまだ含まれています。道と関係があると思って私も試してみました。
rsync -r -v --dry-run --include="dir/" \
--include="dir/another_dir/***" \
--exclude="dir/another_dir/*.RData" \
--exclude="dir/another_dir/boring_dir/" \
--exclude="*/*" 1_counts/* .
いいえ。オプションが不足していて、これらのいくつかが機能する理由は何ですか?
これに対するご意見をお寄せいただきありがとうございます。
答え1
この時点でソリューションに非常に近づいています。
rsync -r -v --dry-run --include="dir/" \
--include="dir/another_dir/***" \
--exclude="*.RData" \
--exclude="boring_dir/" \
--exclude="*/*" 1_counts/* .
内容はこれですrsync
最初の一致パターンの使用そのため、以下の内容をすべて含めると、面倒なanother_dir
コンテンツと.RDataファイルを効果的に含めることができます。フィルタルールの順序を変更するだけです。
rsync -r -v --dry-run --include="dir/" \
--exclude="*.RData" \
--exclude="boring_dir/" \
--include="dir/another_dir/***" \
--exclude="*/*" 1_counts/* .
順序が重要だから人々は、拡張子ごとにファイルを除外するために最初からルールを作成します。と最後に、すべてのルールを除外します。。