如果我的结构如下:
parent/
sub1/
sub2/
sub3/
backup/
file1.txt
file2.txt
.htaccess
我希望将所有内容转换为备份/,包括所有目录/隐藏/文件等。如果我mv * backup/
当然会收到错误,因为我无法将备份移到自身。
如何忽略所有内容但忽略进程中的目标目录?
答案 0 :(得分:1)
mv
抱怨,但它仍然应该按你的要求做。不是吗?
mv *
也不会移动任何点文件。
您需要mv * .* backup/
才能获得有关不移动.
和..
的额外警告。
我可以看到使用shell本身执行此操作的唯一方法是使用extglob
和nullglob
并执行以下操作。
$ shopt -s nullglob extglob
$ mv !(backup) .[!.]* ..?* backup/
答案 1 :(得分:1)
你正在做的事情实际上已经正常工作:你确实收到了关于将某些东西移到自身上的错误,但是这个错误是无害的,并且不能阻止其余的工作。
如果你真的不喜欢这样,你可以这样做:
find . -maxdepth 1 ! -name backup -execdir mv {} backup +