将所有 files/directories/hidden 个文件移动到目录中但忽略目标目录?

Move all files/directories/hidden files into directory but ignore destination directory?

如果我有这样的结构:

parent/
  sub1/
  sub2/
  sub3/
  backup/
  file1.txt
  file2.txt
  .htaccess

并且我想将所有内容都移动到 backup/ 中,包括所有 directories/hidden/files 等。如果我这样做 mv * backup/ 当然会出现错误,因为我无法将备份移动到其自身中。

我如何 mv 一切但忽略过程中的目标目录?

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

另外mv *不会移动任何点文件。

你需要 mv * .* backup/ 因为它会给你关于不要移动的额外警告 ...

我能看到对 shell 本身执行此操作的唯一方法是使用 extglobnullglob 并执行以下操作。

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

您正在做的事情实际上已经运行良好:您确实遇到了将某些东西移动到自身上的错误,但该错误是无害的,并且不会阻止其余部分的工作。

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

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