25

我的旧目录和新目录里面有相同的文件夹和文件。

我尝试:

mv -if old/* new/*

并得到错误

mv: 无法将 `./xxxxxx' 移动到其自身的子目录

我该如何移动它?

4

5 回答 5

30

您应该使用mv -if old/* new/没有尾随的*.

这是因为它展开到

mv -if old/foo old/bar old/baz new/foo new/bar new/baz

即把所有东西都移到 new/baz

这不是你想要的。

于 2009-05-15T11:43:24.537 回答
5
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

有用。你想达到什么目的?你能否写一个简短的例子来说明输入数据应该是什么样子以及输出数据应该是什么样子?事实是我不知道你想做什么 :) 帮助我帮助你。

于 2009-05-16T10:11:16.497 回答
4

请注意, mv a/* b/ 不要将 a/ 中的文件 .*(文件名以 '.' 开头)移动到 b/

前任:

$ mkdir -p a/d b && touch a/f a/.f a/d/.f
$ mv a/* b/
$ ls -a a/
.  ..  .f
于 2013-04-04T10:03:14.833 回答
1

如果您正在从 ext2/3/4 文件系统复制到 FAT32 文件系统,并且文件名包含 FAT32 命名约定的无效字符,您会收到这个非常烦人且不正确的错误消息。我怎么知道?我与这个错误——是的,这是一个内核错误——搏斗了 6 个小时,然后才发现它。我认为这是一个 shell 解释器错误,我认为这是一个“mv”错误 - 我尝试了多个不同的 shell,一切。试试这个实验:在 ext 文件系统上,“touch 'a:b'”它们“mv”到 FAT32 文件系统。试试看,你会喜欢(讨厌)结果。'<' 和 '>' (\074 和 \076)也是如此。

感谢“man mv” - 这是一个真正的大帮助,不要辞掉你的日常工作。

于 2010-06-13T23:37:48.550 回答
1

可能是你得到了答案,但上面的答案对我不起作用......最后我得到了很多研究答案。(问题是由于文件所有权)
,只需将 sudo 放在命令及其工作之前...... :) cp 和 mv 命令也是如此。

sudo mv -if old/* new/
于 2012-12-11T06:05:24.670 回答