将所有文件(包括隐藏文件)移动到父目录中
1. 概述
隐藏文件,也称为点文件,是名称以点 (.) 字符开头的文件。通常,这些文件用于存储配置——例如,/home/user/.config文件可能存储用户的配置设置。
在本教程中,我们将讨论如何使用mv 和rsync 命令将目录中的所有文件(包括隐藏文件)移动到其父目录中。
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,并且在创建目标目录时存在任何权限问题,则不会复制文件,但它们仍会从原始目录中删除。