如何將硬連結轉換為普通文件?

如何將硬連結轉換為普通文件?

我意識到每個文件都是一個硬連結。這就是我的意思:如果索引節點有多個檔案指向它,我該如何複製該索引節點,以便每個檔案都指向具有相同內容的單獨索引節點?

例如:

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)。

相關內容