元のファイルを失うことなくUbuntuからハードリンクを削除する方法は?

元のファイルを失うことなくUbuntuからハードリンクを削除する方法は?

私はUbuntuを使用していますdropbox。問題は、私の写真フォルダに多くのハードリンクがあり、同期の問題があることです。

写真を失うことなく簡単なコマンドでどのようにすべて削除できますか?単一ファイルに対して次のコマンドが見つかりました。

find /home -xdev -samefile "filename" | xargs rm

しかし、すべてのファイルに対してこれを行う方法がわかりません。

事前にありがとう

私のファイルシステムに関する情報:

Filesystem     Type      Size  Used Avail Use% Mounted on
udev           devtmpfs  7,7G     0  7,7G   0% /dev
tmpfs          tmpfs     1,6G  2,4M  1,6G   1% /run
/dev/nvme0n1p3 ext4      435G  203G  211G  50% /
tmpfs          tmpfs     7,7G  756M  7,0G  10% /dev/shm
tmpfs          tmpfs     5,0M  4,0K  5,0M   1% /run/lock

ベストアンサー1

ファイルに複数のハードリンクがある場合は、そのファイルを削除でき、最後のハードリンクが削除されるとデータは削除されます。リンク数は(*)を使用して検索できるため、stat -c '%h' {file}次のように複数のハードリンクを持つすべてのファイルを削除できます。

for file in *
do
   links=$(stat -c '%h' "$file")
   [[ -f "$file" ]] && [[ $links -gt 1 ]] && rm "$file" 
done

彼らが言ったように、結局は一つだけ残ります。、ディレクトリの処理順序、アルファベット順などに基づいて、生存者が最後に確認されます。

(*)これはの出力にも表示されますが、ls -l解析するのは難しいです...

おすすめ記事