回答:
見つかったファイルを/ home / shantanu / tosendにコピーする場合は、cpへの引数の順序を逆にします。
find /home/shantanu/processed/ -name '*2011*.xml' -exec cp "{}" /home/shantanu/tosend \;
注:findコマンドは、一致したファイルのプレースホルダーとして{}を使用します
find -iname '*.mp3' -mtime -1 -exec cp {} /home/my_path/ \;
このコマンドに問題はありますか?機能していません
私はこのような問題に直面しました...
実際には、2つの方法でfind
コマンド出力を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'
あなたの場合、find fileをにコピーするために、copyコマンド構文は間違っています/home/shantanu/tosend
。次のコマンドが機能します。
find /home/shantanu/processed/ -name '*2011*.xml' -exec cp {} /home/shantanu/tosend \;
find
/ xargs
、find <Path> <Conditions> -print0 | xargs -0 -r cp -t <copy file path>
。例:find -mtime -1 -type f -print0 | xargs -r0 cp -t inner/
cp -t /home/shantanu/tosend
引数がソースではなくターゲットディレクトリであることを伝えるには、を使用する必要があります。次に、それをに変更して-exec ... +
、cp
できるだけ多くのファイルを一度にコピーできるようにします。
find /home/shantanu/processed/ -name '*2011*.xml' -exec cp --target-directory=/home/shantanu/tosend {} \;
そのエラーの理由は、cpにも-rオプションが必要なフォルダをコピーしようとしているためです
\;
何ですか?