cp -t /home/shantanu/tosend
を使用する必要があります 引数がソースではなくターゲットディレクトリであることを伝えるため。その後、-exec ... +
に変更できます。 cp
を取得するために 一度にできるだけ多くのファイルをコピーします。
見つかったファイルを /home/shantanu/tosend
にコピーすることが目的の場合 、 cp
への引数の順序があります 逆:
find /home/shantanu/processed/ -name '*2011*.xml' -exec cp "{}" /home/shantanu/tosend \;
注意:find
コマンド使用 {}
一致したファイルのプレースホルダーとして。
私はこのような問題に直面しました...
実際、find
を処理するには 2 つの方法があります。 copy
のコマンド出力 コマンド
find
の場合 コマンドの出力にスペースが含まれていません。つまり、ファイル名にスペースが含まれていない場合は、以下のコマンドを使用できます:
構文:find <Path> <Conditions> | xargs cp -t <copy file path>
例:find -mtime -1 -type f | xargs cp -t inner/
しかし、ほとんどの場合、本番データ ファイルにはスペースが含まれている可能性があります。したがって、ほとんどの場合、以下のコマンドの方が安全です:
構文:find <path> <condition> -exec cp '{}' <copy path> \;
例 find -mtime -1 -type f -exec cp '{}' inner/ \;
2 番目の例では、最後の部分、つまりセミコロンも find
の一部と見なされます。 このコマンドは、Enter ボタンを押す前にエスケープする必要があります。そうしないと、次のようなエラーが発生します
find: missing argument to `-exec'
あなたの場合、コピー コマンドの構文が間違っています 検索ファイルを /home/shantanu/tosend
にコピーするため .次のコマンドが機能します:
find /home/shantanu/processed/ -name '*2011*.xml' -exec cp {} /home/shantanu/tosend \;