是否有可能解决这个问题?
我有一种情况需要将一些文件移到下面的1个目录中。
/a/b/c/d/e/f/g
问题是g/
目录中的文件名与目录名
我收到以下错误:
mv: cannot overwrite directory `../297534' with non-directory
示例: / home / user / data / doc / version / 3766/297534是一个目录,里面还有一个名为297534的文件
所以我需要将此文件移至/ home / user / data / doc / version / 3766
命令 这就是我正在运行的:(在for循环中)
cd /home/user/data/doc/version/3766/297534
mv * ../
答案 0 :(得分:11)
您无法强制mv使用具有相同名称的文件覆盖目录。在使用mv命令之前,您需要删除该文件。
答案 1 :(得分:0)
在循环中再添加一个图层。
将mv * ../
替换为
for f in `ls`; do rm -rf ../$f; mv $f ..; done
这将确保首先删除任何冲突,假设您不关心要覆盖的目录。
请注意,如果您当前目录中的文件恰好与当前目录的名称匹配,则此将爆炸。例如,如果您在/home/user/data/doc/version/3766/297534
,并且您正在尝试移动名为297534
的目录。一种解决方法是为每个文件添加一个长后缀,因此匹配的可能性很小
for f in `ls`; do mv $f ../${f}_abcdefg; done