すべてのファイルがハード リンクであることはわかっています。正確には、inode に複数のファイルがポイントされている場合、すべてのファイルが同じ内容の別の inode を指すように inode をコピーするにはどうすればよいでしょうか。
例えば:
echo "Example" > one
ln one two
inode を共有せずに、ファイルをtwo
と同じ内容にするにはどうすればよいでしょうか? 必要に応じて、ファイルを「複製」したいと思います。one
答え1
これは次のコマンドで実現できます
find -samefile filename -exec sed -i ';;' {} \;
またはファイルのinode番号がわかったら
find -inum inode -exec sed -i ';;' {} \;
これらのコマンドは両方とも、現在の作業ディレクトリのサブディレクトリ内の一致する inode を持つファイルのみを検索することに注意してください。ファイル システム上のすべてのファイルを検索する必要がある場合は、ルート ディレクトリからこのコマンドを実行する必要があります。
最初の部分 はfind -samefile filename
、同じ inode を共有するすべてのファイルを検索します。次に を実行してsed -i ';;'
、ファイルを同じ名前のファイルにコピーします (';;'
の代わりにsed スクリプトを使用することに注意してください';'
。そうしないと、find
は引数をコマンド;
の終了として解釈します-exec
)。