web-dev-qa-db-ja.com

特定のハードリンク数を持つファイルを再帰的に検索します

2番目のディレクトリ(移動/名前変更の追跡に使用)にファイル/ディレクトリへのハードリンクを含む「追跡」ディレクトリがあります。元のフォルダにあるものを削除すると、ハードリンクがまだ存在するため、ディスク領域が解放されません。したがって、この「追跡」ディレクトリを定期的にクリーンアップしたいと思います。したがって、ハードリンク数が1であるすべてのファイルを見つける必要があります。

ハードリンクカウントが1のすべてのファイルを再帰的に検索(および削除)する最も速い方法は何ですか?

find . -type f -exec ls -l {} \+ | grep -P "^.{11}1"のようなことをしてから、さらに配管/再調整を行うことができることはわかっていますが、これは醜くて遅いです。よりクリーンで高速なものを探しています。

5
imsodin

私のfindには-linksオプション(私はUbuntu 14.04.5 LTSを使用しています)。他のハードリンクがないファイルを見つけるには、次を使用します。

find -type f -links 1

これらのファイルを削除するコマンドは次のとおりです。

find -type f -links 1 -exec rm -f {} +
6