这一定是个很受欢迎的问题,但我找不到答案.

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

mv /path/subfolder/* /path/

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

推荐答案

您可以在UNIX&;中找到一套全面的解决方案;Linux对How do you move all files (including hidden) from one directory to another?的回答.它展示了Bash、zsh、ksh93、标准(POSIX)sh等方面的解决方案.


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

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

或者加在一起(thanks 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/..,这是目录和父目录(参见What do “.” and “..” mean when in a folder?).


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

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

这将复制所有文件,包括普通文件和隐藏文件,因为/path/subfolder/.扩展为"来自此目录的所有内容"(来源:How to copy with cp to include hidden files and hidden directories and their contents?)

Linux相关问答推荐

在c++编译期间,什么是linux命令,它给出了链接库的路径?

AWK打印到文件正在追加,而不是覆盖

ShellScript,有更好的方法来查找具有特定名称和日期的文件吗?

匹配模式和提取

SessionNotCreatedException:无法启动新会话.响应代码 500 在远程服务器上的 Apache Tomcat/10.0.23 上使用 ChromeDriver

如何启用或切换现有的Flutter 项目(仅限移动设备)到 MacOS 或 WEB 或 Linux 或 Windows?

awk/sed 命令仅在模式 2 匹配时打印模式 1

如何在Linux中将文件的特定行号中的数字乘以2(双)?

使用正则表达式时,Shell 'tar: not found in archive' 错误

将以前忽略的目录添加到 Git 存储库

将参数传递给 awk 脚本文件

为 django 项目安装 memcached

如何从任意 pthread_t 获取线程 ID?

在 Linux 上用 C 语言读写串口

Docker Bash 提示不显示 colored颜色 输出

仅使用 proc 获取本地网络接口地址?

从线程内Forking 是否安全?

如何通过命令提示符判断 Linux 中的 BIOS 版本或名称?

如何在 IE 中使用 Linux 进行测试

如何将所有文件从一个目录移动(和覆盖)到另一个目录?