您可以在 UNIX & Linux 的回答中找到关于此问题的一套全面的解决方案如何将所有文件(包括隐藏文件)从一个目录移动到另一个目录? https://unix.stackexchange.com/a/6397/40596。它显示了 Bash、zsh、ksh93、标准 (POSIX) sh 等中的解决方案。
您可以一起使用这两个命令:
mv /path/subfolder/* /path/ # your current approach
mv /path/subfolder/.* /path/ # this one for hidden files
或者全部一起(谢谢 pfnuesel https://stackoverflow.com/questions/20192070/how-to-move-all-files-including-hidden-files-into-parent-directory-via/20192079?noredirect=1#comment30104778_20192079):
mv /path/subfolder/{.,}* /path/
扩展到:
mv /path/subfolder/* /path/subfolder/.* /path/
(例子:echo a{.,}b
扩展到a.b ab
)
请注意,这将显示一些警告:
mv: cannot move ‘/path/subfolder/.’ to /path/.’: Device or resource busy
mv: cannot remove /path/subfolder/..’: Is a directory
忽略它们:发生这种情况是因为/path/subfolder/{.,}*
也扩展到/path/subfolder/.
and /path/subfolder/..
,它们是目录和父目录(请参见做什么 ”。”和“..”意味着在文件夹中? https://askubuntu.com/q/54900/143251).
如果你只想复制,你可以使用:
cp -r /path/subfolder/. /path/
# ^
# note the dot!
这将复制所有文件,包括普通文件和隐藏文件,因为/path/subfolder/.
扩展为“此目录中的所有内容”(来源:如何使用 cp 复制以包含隐藏文件和隐藏目录及其内容? https://superuser.com/a/367303/204979)