递归查找具有特定硬链接数的文件

递归查找具有特定硬链接数的文件

我有一个“跟踪”目录,其中包含指向第二个目录中文件/目录的硬链接(用于跟踪移动/重命名)。如果我删除原始文件夹中的某些内容,则不会释放任何磁盘空间,因为其硬链接仍然存在。所以我想定期清理这个“跟踪”目录。因此,我需要在其中找到硬链接数为 1 的所有文件。

以递归方式查找(并删除)所有硬链接数为 1 的文件的最快方法是什么?

我知道我可以做一些类似的事情find . -type f -exec ls -l {} \+ | grep -P "^.{11}1",然后再做一些管道/正则表达式,但这很丑陋而且很慢。我正在寻找更干净、更快的方法。

答案1

其中find-links主要的:

-links n
n如果文件有链接, 则主要评估为真。

来源

要查找硬链接数为 1 的常规文件,请使用:

find . -type f -links 1

删除这些文件的命令是:

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

相关内容