我旧的目录和新的目录里面都有相同的文件夹和文件。
我尝试了:
mv -if old/* new/*
我尝试移动文件时出现了错误:
mv: cannot move `./xxxxxx' to a subdirectory of itself
该怎么移动它呢?
我旧的目录和新的目录里面都有相同的文件夹和文件。
我尝试了:
mv -if old/* new/*
我尝试移动文件时出现了错误:
mv: cannot move `./xxxxxx' to a subdirectory of itself
该怎么移动它呢?
你应该使用 mv -if old/* new/
而不要加上结尾的 *
。
这是因为它会展开成
mv -if old/foo old/bar old/baz new/foo new/bar new/baz
即将所有内容移动到新目录new/baz。
这不是您想要的。
reef@localhost:/tmp/experiment$ ls a
11 22 33
reef@localhost:/tmp/experiment$ ls b
22 33
reef@localhost:/tmp/experiment$ ls
a b
reef@localhost:/tmp/experiment$ mv a/* b
reef@localhost:/tmp/experiment$ ls a
reef@localhost:/tmp/experiment$ ls b
11 22 33
它起作用了。你想要实现什么?能否请您写一个简短的示例,说明输入数据应该是什么样子以及输出数据应该是什么样子?事实上,我不知道你想做什么 :) 帮助我帮助你。
$ mkdir -p a/d b && touch a/f a/.f a/d/.f
$ mv a/* b/
$ ls -a a/
. .. .f
如果你从一个ext2/3/4文件系统复制到一个FAT32文件系统,并且文件名包含FAT32命名约定中的无效字符,你会得到这个非常恼人和不正确的错误消息。我怎么知道的?我与这个BUG - 是的,它是一个KERNEL BUG - 搏斗了6个小时,直到我意识到。我以为这是一个shell解释器错误,我以为这是一个“mv”错误 - 我尝试了多个不同的shell,一切都试过了。试试这个实验:在一个ext文件系统上,“touch 'a:b'”,然后将其“mv”到一个FAT32文件系统中。试试吧,你会喜欢(讨厌)结果的。对于'<'和'>'(\074和\076),情况也是如此。
感谢“man mv” - 这真的很有帮助,不要放弃你的日常工作。
sudo mv -if old/* new/