Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在linux上找到基本上是其他目录或文件的软链接或硬链接的所有文件?_Linux_Shell_Find_Hardlink_Symlink - Fatal编程技术网

如何在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