如何通过 \\* 将包括隐藏文件在内的所有文件移动到父目录中

新手上路,请多包涵

它一定是一个受欢迎的问题,但我找不到答案。

如何通过 \* 将所有文件(包括隐藏文件)移动到父目录,如下所示:

 mv /path/subfolder/* /path/

这会将所有文件移动到预期的父目录,但不会移动隐藏文件。怎么做?

原文由 TroodoN-Mike 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 969
2 个回答

您可以在 UNIX 和 Linux 对 如何将所有文件(包括隐藏文件)从一个目录移动到另一个目录的回答中找到一套全面的解决方案? .它显示了 Bash、zsh、ksh93、标准 (POSIX) sh 等中的解决方案。


您可以同时使用这两个命令:

 mv /path/subfolder/* /path/   # your current approach
mv /path/subfolder/.* /path/  # this one for hidden files

或者一起( 感谢 pfnuesel ):

 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/./path/subfolder/.. ,它们是目录和父目录(参见 做什么..”的意思是什么时候在文件夹中? )。


如果你只想复制,你可以使用:

 cp -r /path/subfolder/. /path/
#                     ^
#                     note the dot!

这将复制所有文件,包括普通文件和隐藏文件,因为 /path/subfolder/. 扩展为“此目录中的所有内容”(来源: 如何使用 cp 复制以包括隐藏文件和隐藏目录及其内容?

原文由 fedorqui 发布,翻译遵循 CC BY-SA 3.0 许可协议

我认为这是最优雅的,因为它也不会尝试移动 ..

 mv /source/path/{.[!.],}* /destination/path

原文由 Vanderstaaij 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题