1
+
ターミネータで-exec
にコマンドを実行することを拒否しますが、単に+
を\;
に変更するとexecが実行されます。を含むfind -exec;実行されますが、ターミネータが "-execに引数がありません"と失敗した場合
find_args=(-type f -name "*users*" -cmin -60)
rsync_args=(-avhP -e 'ssh -i /home/some_user/.ssh/id_rsa -c arcfour')
[email protected]_host:/some/destination/
これは動作します:
は次のセットアップ後に、考えてみましょう
# runs rsync once per file, thus slower than it should need to be
find . "${find_args[@]}" -exec rsync "${rsync_args[@]}" {} "$dest" \;
...しかし、これは失敗します。
# exactly the same, except for + rather than \;
# ...should use the same rsync call for multiple files.
find . "${find_args[@]}" -exec rsync "${rsync_args[@]}" {} "$dest" +
...とエラーfind: missing argument to '-exec'
。
私は+
引数をサポートするために文書化されているGNU findutils 4.4.2を使用しています。 find -exec ... {} +
で
チャールズ、私はこれが重複しているとは思わない。実際、あなたがリンクした*質問*はこの*質問に対する答えです。 – ghoti
@ghoti、...他の質問のOPはすでにそれを孤立させています* findは他のものを許可していませんし、回避する方法を尋ねています。ここでのOPはまだ得られていませんが、それらに含まれる制限は同一であり、いずれの回答も両方に答えるでしょう。 –
@ghoti、...与えられた、現OPの観点から考えると、他の質問が同じものだと思う人には明らかではないかもしれませんが、私たちは(サイトとして)彼らの周りを維持し、人々が潜在的に閉鎖された質問から担当者を得ることを可能にする:潜在的に解釈される問題にもかかわらず、知識の単一の標準的な情報源にガイドポストとして異なる角度/ –