cpを停止する方法: './xxx'を上書きしますか?促す


19

cpコマンドが上書きのプロンプトを表示しないようにするにはどうすればよいですか。ターミナルに戻らなくても、すべてのファイルを上書きしたいです。これらは大きなファイルであるため、完了するまでに時間がかかります。

-fオプションを使用してみました。上書きするかどうかを尋ねます。

   -f, --force
          if an existing destination file cannot be opened, remove it and
          try again (redundant if the -n option is used)

cp -f /media/somedir/somefiles* .  
cp: overwrite `./somefilesxxx'? y

回答:


17

の呼び出し/bin/cpに加えて、次のいずれかを実行できます。

\cp -f ...
command cp -f ...

ただし、cp -iまたはのようなエイリアスを使用することに慣れてはならないことに同意します。rm -i別のシェルに座った場合、依存するセーフティネットがないことになります。


1
Aはwhereis cpコマンドがどこにあるかが表示されます。したがって、エイリアスの代わりに実際のコマンドを呼び出すことができます。
アンソニーB

12

このソリューションを見た後。bashesエイリアス機能が問題を引き起こしていることがわかりました。 http://systembash.com/content/prompt-to-confirm-copy-even-with-cp-f/

which cp  
alias cp='cp -i'
/bin/cp
which cp | grep cp
alias cp='cp -i'
/bin/cp

彼はお勧めします

unalias cp

エイリアスを保持したいので、このインスタンスに適用したくないだけです。私の解決策は、Bashesエイリアス関数が引き継がないように、フルパスでバイナリを使用することです。それは非常にうまくいきます。

/bin/cp -f /media/somedir/somefiles* .  

4

残念ながら、Linuxのcopy "cp"コマンドには、この質問に自動的に "y"または "n"で答えるオプションがありません。何をしたいかによって、この問題には複数の解決策があります。1つの解決策は、Unixの「yes」コマンドを使用することです。このコマンドは、強制終了されるまで文字列を繰り返し出力します。

宛先ディレクトリ内のすべてのファイルを上書きする場合、「yes」コマンドを使用して、すべての質問に「y」で答えることができます。「y」はデフォルト値であるため、指定する必要はありません。

yes | cp source/*.txt destination/.

宛先ディレクトリのファイルの上書きを避けたい場合は、「yes」コマンドを使用して、「n」を付けずにすべての質問に答えることができます。

yes n | cp source/*.txt destination/.

「yes」コマンドの詳細については、「man yes」を使用してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.