如何将硬链接转换为普通文件?

如何将硬链接转换为普通文件?

我意识到每个文件都是一个硬链接。这就是我的意思:如果一个索引节点有多个文件指向它,我如何复制该索引节点,以便每个文件都指向具有相同内容的单独索引节点?

例如:

echo "Example" > one
ln one two

如何使文件two具有与 相同的内容one,而不共享 inode?如果您愿意,我想“重复”这些文件。

答案1

这可以通过命令来实现

find -samefile filename -exec sed -i ';;' {} \;

或者如果您现在知道文件的索引节点号

find -inum inode -exec sed -i ';;' {} \;

请注意,这两个命令仅在当前工作目录的子目录中查找具有匹配 inode 的文件。如果您需要搜索文件系统上的所有文件,则需要从根目录运行此命令。

第一部分find -samefile filename,查找共享相同索引节点的所有文件。然后它执行sed -i ';;'将文件复制到具有相同名称的文件(注意我们使用 sed 脚本';;'而不是';',否则,find会将参数解释;为命令的结尾-exec)。

相关内容