cp -Trオーバーライド動作

cp -Trオーバーライド動作

GNU coreutilsを使用しています

fooファイルfile1と。barfile2

今すぐ実行すると、cp -rT foo barマンページで信じることができるので、barには上書きするのではなく両方のファイルが含まれます。

私は「bar」をマージせず、「foo」の内容だけを含めたいです。

ベストアンサー1

GNUの場合、cpこの-Tオプションはソースディレクトリが次の場所に配置されないようにするために使用されます。~へターゲットディレクトリ。宛先ディレクトリの内容は削除されません。

this()に関する情報文書はinfo '(coreutils)Target directory'次のように言います(例として使用されますmv)。

-T

--no-target-directory

最後のオペランドがディレクトリまたはディレクトリへのシンボリックリンクの場合、特別な処理は提供されません。これは、共有領域で実行されるプログラムの競合状態を防ぐのに役立ちます。たとえば、コマンドがmv /tmp/source /tmp/dest成功しても名前が次に変更されるという保証はありません/tmp/source。別のプロセスでディレクトリを作成した場合は、名前が/tmp/dest変更された可能性があります。しかし、成功すれば名前を変えることには問題はないだろう。/tmp/dest/source/tmp/destmv -T /tmp/source /tmp/dest/tmp/source/tmp/dest

mv -T source dest空でないと失敗します。dest


の内容を例の内容barに置き換えるには、次のようにします。foo

rm -rf bar
cp -r foo bar

または、

rsync --archive --delete foo/ bar

おすすめ記事