web-dev-qa-db-ja.com

既存のフォルダーをmvコマンドで置き換える

この質問がすでに行われている場合は、お詫びします。何も見つかりませんでした…

「oldstuff」を「newstuff」に置き換えたいとしましょう。基本的に名前を変更して置き換えます。このコマンドを使用してみます:

mv ~/newstuff ~/oldstuff

しかし、これは「newstuff」フォルダを「oldstuff」フォルダに移動するだけです。

'oldstuff'を 'newstuff'に置き換えるにはどうすればよいですか?

OS X 10.7を実行しています。

8
Jacob Wood

~/oldstuffが存在しない場合、

mv ~/newstuff ~/oldstuff

newstuffの名前をoldstuffに変更します。存在する場合は、newstuffoldstuffに移動します。

したがって、あなたの質問に答えるには、最初に~/oldstuffを削除し(またはolderstuffに名前を変更して、この方法をもう一度確認してください)、次にmvコマンドを使用してください。

7
choroba

別の解決策は、rsyncを使用することです。 (末尾のスラッシュには注意してください。重要です)。

これにより、newstuffのすべてがoldstuffにコピーされます。

rsync -av ~/newstuff/ ~/oldstuff

そして、以下のコードはnewstuffのすべてをoldstuffにコピーし、newstuffにないoldstuffのすべてを削除します。

rsync -av --delete ~/newstuff/ ~/oldstuff

ただし、これらのコマンドはどちらも〜/ newstuff内のファイルに対しては何も行いません。それらを削除する場合は、rmコマンドを個別に実行する必要があります。

7
Kent

あなたが試すことができます:

mv -f folder1/* folder2 && rmdir folder1

ファイルとディレクトリを含むfolder1内のすべてをfolder2に移動します。

-f--reply=yesに相当するものを上書きする前にプロンプ​​トを表示しません。

mvのマニュアルページ

2
stderr

少なくとも2つのオプションがあります。

mv ~/newstuff/* ~/oldstuff
rmdir ~/newstuff
mv ~/oldstuff ~/newstuff

そして

mv ~/oldstuff ~/ancientstuff
mv ~/newstuff ~/oldstuff