我需要找到给定文件系统上的所有硬链接文件。例如获取文件列表,每行包含链接对或三元组等。
我或多或少了解如何做到这一点,需要为文件系统上的所有文件/目录创建一个由 inode 键控的字典,排除“。” 和“..”链接,然后有多个名称的 indodes 是硬链接...但我希望可能存在现成的解决方案,或者有人已经编写了这样的脚本。
Gil*_*not 30
您可以运行以下命令:
find / -type f -printf '%n %p\n' | awk '$1 > 1{$1="";print}'
Run Code Online (Sandbox Code Playgroud)
查找所有硬链接文件。
或@mbafford 版本:
find / -type f -links +1 -printf '%i %n %p\n'
Run Code Online (Sandbox Code Playgroud)
小智 18
find . -type f -links +1 2>/dev/null
Run Code Online (Sandbox Code Playgroud)
给出具有多个链接的所有文件的列表,即存在硬链接的文件。循环这个相对容易 - 如果你没有那么多文件,一个hacky解决方案
for i in $(find . -type f -links +1 2>/dev/null); do find -samefile $i | awk '{printf "%s ", $1}'; printf "\n"; done | sort | uniq
Run Code Online (Sandbox Code Playgroud)
但我真诚地希望有更好的解决方案,例如让第一个find调用打印 inode 编号,然后使用find's-inum选项显示与此 inode 关联的所有文件。
| 归档时间: |
|
| 查看次数: |
29951 次 |
| 最近记录: |