`mv`を使用して空でないディレクトリを強制的に上書きする方法


17

ファイル/ディレクトリのグループを、ターゲットディレクトリ内のファイル/ディレクトリと名前が競合する別のディレクトリに移動(コピーするだけでなく)したいです。私の主な目的はファイルを移動することであるため、空でないディレクトリが上書きされることを許容できます。

私は現在使用していますmv ... destinationが、時々

mv:「target」を/ destination / targetに移動できません:ディレクトリが空ではありません

私はmv -f ... destination成功せずに試しましたが、ファイルを元の場所から削除したいので、rsync適切ではないようです。

ボーナスとして、おそらく名前を変更することによって何らかの方法で上書きされることを意図したファイルを保存するための良い解決策はありますか?


また、mvコマンドを試行すると、どのようなエラーが発生しますか?
容疑者14年

あなたはそれrsyncがあなたが望むものではないことを明示的に言う。なぜこれをタグ付けしたのrsyncですか?
DopeGhoti

@DopeGhoti私はそれが適切ではないと言ったが、そうでなければ見せてくれる。
user1227038 14年

@suspectus質問を更新しました。
user1227038 14年

1
あなたが使用することを使用している場合mv --backup=numberedかの他のオプションの1 --backupスイッチ、そしてmvマージを完了し、ファイルを保存します上書きすることを意図
BSD

回答:


19

あなたは、使用している場合mv --backup=numbered
(またはのための他のオプションの1 --backupスイッチ)、
その後、mvファイルを上書きすることを意図し、マージを完了し、保持されます。


馬鹿げた答え-これは.~1~フォルダでドライブを汚染します
ツールキット

0
#!/bin/bash
SAVEIFS=$IFS
IFS=$(echo -en "\n\b")
SRC=/path/to/source
DST=/path/to/destination

for item in $SRC/*; do
    if [[ -f "$DST/$(basename "$item")" ]]; then
        newitem=$(basename $item)_old
        while [[ -f "$DST/$newitem" ]]; do
            newitem=${newitem}_old
        done
        mv "$DST/$(basename $item)" "$DST/$newitem"
    fi
    mv "$item" "$DST/$(basename $item)"
done

1
このスクリプトの代わりにcpmvコマンドの後に直接実行できます。
reza.safiyat

0

あなたは使用することができるmcとして、画面とフォルダ内(ミッドナイトコマンダー)InsF6

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