web-dev-qa-db-ja.com

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

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

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

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

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

おまけとして、おそらく名前を変更することによって上書きされる予定のファイルを保持するための良い解決策はありますか?

17
user1227038

mv --backup=numberedを使用する場合
(または--backupスイッチの他のオプションの1つ)、
次にmvはマージを完了し、上書きされる予定のファイルを保持します。

19
bsd
#!/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
0
DopeGhoti

画面内のmc(ミッドナイトコマンダー)とInsおよびF6

0
Toolkit