使用するとき
cp -R inputFolder outputFolder
結果はコンテキスト依存です:
outputFolder
存在しない場合は作成され、クローンフォルダのパスはになりますoutputFolder
。- 場合
outputFolder
が存在する場合、作成されたクローンは次のようになりますoutputFolder/inputFolder
インストールスクリプトを作成したいので、これは恐ろしいことです。ユーザーが誤って2回実行した場合outputFolder
、最初に作成され、2回目の実行ですべてのものがもう一度作成されoutputFolder/inputFolder
ます。
- 常に最初の動作が必要です:オリジナルの隣に(兄弟として)クローンを作成します。
cp
ポータブルにしたい(たとえば、MINGWはrsync
出荷されていない)- 私はチェックしました
cp -R --parents
が、これはディレクトリツリーのすべての方法でパスを再作成します(したがって、クローンは作成されませんoutputFolder
がsome/path/outputFolder
) --remove-destination
または--update
、2が何も変更しない場合でも、物事はコピーされますoutputFolder/inputFolder
outputFolder
(フォルダが存在しない場合は...)の存在を最初に確認せずにこれを行う方法はありますrm -rf outputFolder
か?
合意された移植可能なUNIXの方法は何ですか?
rsync
か?
cp
、2つのtar
コマンド間のパイプは、ツリーをコピーするための優れた信頼できる方法です。
rsync
出荷されていないMINGWで動作するようにします。
tar -C input -cf - . | tar -C output -xf -
動作します。-C
作業ディレクトリを変更しますが、これは標準オプションではないため、サポートされていない場合は、最初に正しい作業ディレクトリで2つのtarを実行する必要があり( cd input && tar -cf - . ) | ( cd output && tar -xf - )
ます。
mv
?