私がfind
定義するために使用すると仮定源泉ファイル操作の場合は、rsync
次の2つのコマンドでのみ知られている特殊機能を使用します。
find /path/to/data -mtime -7 -mtime +5 -exec rsync -aAXu {} /path/to/dest \;
ただし、この場合はasと+
一緒に使用することはできません。-exec
rsync
目的地最後の主張に。
これは、パラメータリストを作成して最小回数だけを呼び出すのrsync
ではなく、一致する各ファイルが一度呼び出されることを意味します。rsync
xargs
フラグが必要なため、同じ問題が発生します。-I
これは-L 1
。
ドキュメントにはこの--destination-dir=dest
オプションは表示されないようです。
rsync
ソースファイルのリストから-build-upコマンドを生成する簡単な方法はありますか?
たぶんこれはXYの問題であり、他のコマンドがより適切ですか?
答え1
rsync
に電話する-exec
代わりに、sh -c
以下を呼び出します。
find ... -exec sh -c 'rsync ... "$@" /path/to/dest' sh {} +
これは、単に目的の方法で呼び出され、渡された現在のバッチで見つかったパス名であるsh -c
インラインスクリプトを使用して呼び出されます。rsync
"$@"
find
末尾は、インラインスクリプトにsh
配置されるランダムな文字列です。それ以外の場合は、見つかった最初のパス名がに配置されていない$0
ため、これが必要です。の値は現在のシェルの名前でなければならず、シェルによって生成されたすべての診断メッセージに使用されます。$0
"$@"
$0