![如何将硬链接转换为普通文件?](https://linux22.com/image/95298/%E5%A6%82%E4%BD%95%E5%B0%86%E7%A1%AC%E9%93%BE%E6%8E%A5%E8%BD%AC%E6%8D%A2%E4%B8%BA%E6%99%AE%E9%80%9A%E6%96%87%E4%BB%B6%EF%BC%9F%20.png)
我意识到每个文件都是一个硬链接。这就是我的意思:如果一个索引节点有多个文件指向它,我如何复制该索引节点,以便每个文件都指向具有相同内容的单独索引节点?
例如:
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
)。