Contents

将所有文件(包括隐藏文件)移动到父目录中

1. 概述

隐藏文件,也称为点文件,是名称以点 (.) 字符开头的文件。通常,这些文件用于存储配置——例如,/home/user/.config文件可能存储用户的配置设置。

在本教程中,我们将讨论如何使用mvrsync 命令将目录中的所有文件(包括隐藏文件)移动到其父目录中。

2. 使用mv命令

mv命令用于将文件和目录从一个地方移动到另一个地方。我们也可以用它来重命名文件和目录。

让我们看一个如何使用mv命令将所有文件移动到父目录的基本示例:

mv /path/subfolder/* /path/

这会将所有文件从/path/subfolder移动到/path/除了隐藏的文件和目录。

那么,让我们看看如何移动隐藏的文件和目录:

mv -f /path/subfolder/{.,}*/path/

上面的命令扩展为:

mv /path/subfolder/* mv /path/subfolder/.* /path/

请注意,星号(*)表示子文件夹中的所有文件,点星号(.*)表示subfolder夹中的所有隐藏文件。因此,这两种文件类型都将被复制到path目标文件夹。

此外,由于我们包含*-f*选项,目标文件夹中的任何现有文件和目录都将被覆盖,而不会提示确认。

最后,重要的是要注意原始文件夹(在本例中subfolder)不会作为mv操作的一部分被删除。

3.使用rsync

rsync是一种 Linux 实用程序,用于在本地或远程将文件从一个目录移动或复制到另一个目录。它还支持移动组、权限、链接和设备。

rsync使用远程更新协议来移动或复制文件。这允许仅传输两组文件之间的差异。

首先,让我们使用带有*–dry-run选项的rsync*来查看在不执行实际移动操作的情况下将移动哪些文件:

sudo rsync --dry-run path/subfolder/ path/

现在让我们看看如何使用rsync移动所有文件,包括隐藏文件

sudo rsync --remove-source-files /path/subfolder/ /path/

上面的命令将所有文件从目录*/path/subfolder/移动到它的父目录/path/*。

请注意,rsync会移动所有文件,包括隐藏文件,因为我们在路径末尾使用了 /。这表示完整的源目录应该与目标目录同步。

** –remove -source-files选项将在文件复制到目标目录后从源目录中删除文件**。作为同步操作的一部分,这还将删除原始文件夹、subfolder

另外,请注意我们使用sudo 以管理员权限执行rsync命令。这避免了创建目标目录时的任何权限问题

如果我们不使用sudo,并且在创建目标目录时存在任何权限问题,则不会复制文件,但它们仍会从原始目录中删除。