如何在linux上找到基本上是其他目录或文件的软链接或硬链接的所有文件?
如何获取系统上或某个目录中所有链接文件的列表。我过去常常创建链接,但随着时间的推移,它们变得难以管理。我想要一个目录中所有此类链接的列表。有人能帮忙吗?查找符号链接很容易:如何在linux上找到基本上是其他目录或文件的软链接或硬链接的所有文件?,linux,shell,find,hardlink,symlink,Linux,Shell,Find,Hardlink,Symlink,如何获取系统上或某个目录中所有链接文件的列表。我过去常常创建链接,但随着时间的推移,它们变得难以管理。我想要一个目录中所有此类链接的列表。有人能帮忙吗?查找符号链接很容易: % find . -type l 查找硬链接是很棘手的,因为如果相关目录的子目录也有子目录,那么这些子目录会增加硬链接的数量。这就是子目录在UNIX中链接到其父目录的方式(每个子目录中都有。项) 如果您只想查找链接的文件(而不是目录),这将起作用: % find . -type f \! -links 1 这是因为具有硬
% find . -type l
查找硬链接是很棘手的,因为如果相关目录的子目录也有子目录,那么这些子目录会增加硬链接的数量。这就是子目录在UNIX中链接到其父目录的方式(每个子目录中都有。
项)
如果您只想查找链接的文件(而不是目录),这将起作用:
% find . -type f \! -links 1
这是因为具有硬链接的文件的链接计数将大于1,而未链接的文件的链接计数==1,因此此命令将查找链接计数为1的所有文件
或者,在较新版本的find
上,您可以使用:
% find . -type f -links +1
其工作原理与上述相同;但是,较新版本的find可以采用+n或-n,而不仅仅是一个数字。这相当于分别测试大于n或小于n。@OP,如果您有GNU查找,您可以使用
-printf“%n”
,,
e、 g
参见此处示例
或者将Alnitak和amber_linux answer组合成
find-L/where/to/search-samefile/some/link/to/file
查找指向给定文件的所有硬链接和软链接。我认为这属于serverfault而不是serverfault。。。这里没有与服务器或网络相关的内容。。。这是超级用户。谢谢!这正是我在寻找的-如何找到其他哪些文件实际上与我正在查看的文件相同。呃。。。如果一个文件有@101,那么提供-1确实找不到任何文件。
find /path -type f -printf "%f/%n/%i\n" | while IFS="/" read filename num_hlinks inum
do
echo "Filename: $filename. Number of hard links: $num_hlinks, inode: $inum"
# if 2 or more files have the same inode number, then they are hard links.
# you can therefore count how many $inum that are the same and determine those hard links, which
# you have to try doing yourself.
done
find / -xdev -samefile filename