将所有文件从一个文件夹移动到上层文件夹

将所有文件从一个文件夹移动到上层文件夹

我正在寻找如何将文件从一个文件夹移动到上层文件夹的问题答案,但我没有找到答案mv name/* .

为什么我不能用这个将文件移动到上层文件夹?得票最多的选项是mv * .[^.]* ..,所以我的问题是,为什么mv name/* .是错误的?

问候

答案1

因为通配符.mv name/* .仅匹配文件夹中不以点 ( .) 开头的文件。您可以通过设置更改该行为点团在 bash shell 中:

shopt -s dotglob

现在,您可以使用它mv name/* .来移动所有文件和文件夹。

例如有一个包含两个文件的文件夹:file.file

$ echo *
file
$ shopt -s dotglob
$ echo *
file .file

注意: mv * .[^.]* destination无需 dotglob 即可工作,因为它匹配第一个*和第二个.[^.]*,它们匹配以点(而不是.and ..)开头的文件/文件夹。

答案2

如果档案包含点文件,您可能还需要匹配.**

还要&& rmdir folder在末尾添加 o 以删除现在多余的文件夹。这很安全,因为它仅在 mv 返回成功时才会运行,并且因为 rmdir 不会删除非空目录。

相关内容