GNU coreutilsを使用しています
foo
ファイルfile1
と。bar
file2
今すぐ実行すると、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/dest
mv -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