如何使用`mv'强制覆盖非空目录


17

我想将一组文件/目录移动(而不是复制)到另一个目录,其中一些文件/目录的名称与目标目录中的文件/目录冲突。我的主要目标是移动文件,因此我可以忍受被覆盖的非空目录。

我目前正在使用mv ... destination,偶尔

mv:无法将“目标”移动到“ /目标/目标”:目录不为空

我尝试mv -f ... destination没有成功,并且由于我希望将文件从其原始位置删除,rsync因此似乎不合适。

另外,是否存在一个很好的解决方案,可以保留通过重命名以某种方式覆盖打算覆盖的文件?


尝试执行mv命令时会遇到什么错误?
2014年

您明确地说那rsync不是您想要的;你为什么用这个标记rsync
DopeGhoti 2014年

@DopeGhoti我说这似乎不合适,但我愿意被其他人看到。
user1227038 2014年

@suspectus更新了问题。
user1227038 2014年

1
如果mv --backup=numbered--backup开关使用use 或其他选项之一,mv则将完成合并并保留要覆盖的文件
bsd 2014年

Answers:


19

如果你使用mv --backup=numbered
(或为其他选项--backup开关),
然后mv将完成合并,并保留这些文件旨在覆盖。


愚蠢的答案-这将污染.~1~文件夹的驱动器
Toolkit

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
代替此脚本,可以直接运行cp后跟mv命令。
reza.safiyat 2015年

0

您可以使用mc(午夜指挥官)里面的画面,并用文件夹InsF6

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.