Bash 是否将所有文件/目录/隐藏文件移到目录中,但忽略目标目录?

Bash 是否将所有文件/目录/隐藏文件移到目录中,但忽略目标目录?,bash,ubuntu,Bash,Ubuntu,如果我的结构如下: parent/ sub1/ sub2/ sub3/ backup/ file1.txt file2.txt .htaccess 我想将所有内容都移动到备份中,包括所有目录/隐藏/文件等。如果我执行mv*backup/,当然会出现错误,因为我无法将备份移动到自身中 在这个过程中,我如何在不忽略目标目录的情况下移动所有内容?mv在您这样做时会抱怨,但它仍然应该按照您的要求进行操作。不是吗 而且mv*不会移动任何点文件 您需要mv*.backup/,以

如果我的结构如下:

parent/
  sub1/
  sub2/
  sub3/
  backup/
  file1.txt
  file2.txt
  .htaccess
我想将所有内容都移动到备份中,包括所有目录/隐藏/文件等。如果我执行
mv*backup/
,当然会出现错误,因为我无法将备份移动到自身中


在这个过程中,我如何在不忽略目标目录的情况下移动所有内容?

mv
在您这样做时会抱怨,但它仍然应该按照您的要求进行操作。不是吗

而且
mv*
不会移动任何点文件

您需要
mv*.backup/
,以获得关于不移动
的额外警告。

对于shell本身,我能看到的唯一方法是使用
extglob
nullglob
并执行以下操作

$ shopt -s nullglob extglob
$ mv !(backup) .[!.]* ..?* backup/

实际上,您正在做的工作已经很好了:您确实会在将某些内容移动到自身时出错,但该错误是无害的,并且不会阻止其余部分的工作

如果你真的不喜欢,你可以这样做:

find . -maxdepth 1 ! -name backup -execdir mv {} backup +

我相信这也会尝试将
移动到备份。是否有服务器或Ubuntu选项?我的服务器现在所做的是在目录本身之前移动任何内容,然后在到达该点时停止。例如,任何以A开头的东西都会被移动,但在B之后什么也不会移动。我在另一台服务器上测试了它,它的工作原理就像你说的,所有东西都会被移动(除了.file),但目录进入后所有东西都会被移动。奇怪的是,这个工作服务器正在做一些不同的事情,所以我认为可能有一个选项可以在出错或其他情况下终止所有进程?@o_o:你能在回答中编辑一个简短的脚本,复制你看到的行为,当它进入“备份”时,它会停止在哪里?我无法在Ubuntu10.04上复制它。我没有足够的技能来复制它。我知道问题服务器是12.14。现在,我只是使用了您提供的脚本来实现这个技巧。