将所有 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 本身执行此操作的唯一方法是使用 extglob
和 nullglob
并执行以下操作。
$ shopt -s nullglob extglob
$ mv !(backup) .[!.]* ..?* backup/
您正在做的事情实际上已经运行良好:您确实遇到了将某些东西移动到自身上的错误,但该错误是无害的,并且不会阻止其余部分的工作。
如果你真的不喜欢那样,你可以这样做:
find . -maxdepth 1 ! -name backup -execdir mv {} backup +
如果我有这样的结构:
parent/
sub1/
sub2/
sub3/
backup/
file1.txt
file2.txt
.htaccess
并且我想将所有内容都移动到 backup/ 中,包括所有 directories/hidden/files 等。如果我这样做 mv * backup/
当然会出现错误,因为我无法将备份移动到其自身中。
我如何 mv 一切但忽略过程中的目标目录?
mv
会在您这样做时抱怨,但它仍然应该按照您的要求进行。不是吗?
另外mv *
不会移动任何点文件。
你需要 mv * .* backup/
因为它会给你关于不要移动的额外警告 .
和 ..
。
我能看到对 shell 本身执行此操作的唯一方法是使用 extglob
和 nullglob
并执行以下操作。
$ shopt -s nullglob extglob
$ mv !(backup) .[!.]* ..?* backup/
您正在做的事情实际上已经运行良好:您确实遇到了将某些东西移动到自身上的错误,但该错误是无害的,并且不会阻止其余部分的工作。
如果你真的不喜欢那样,你可以这样做:
find . -maxdepth 1 ! -name backup -execdir mv {} backup +