查找链接文件

查找链接文件

尝试找到/usr/include/freetype2/ft2build.h系统中文件链接的位置:

sudo find -L / -samefile /usr/include/freetype2/ft2build.h 

这会带来很多错误File system loop detected

find: File system loop detected; `/sys/bus/cpu/devices/cpu0/node0/memory0/subsystem/devices/memory2/firmware_node/subsystem/devices/PNP0303:00/physical_node/subsystem/devices/00:06/tty/ttyS0/subsystem/ttyS2/device/subsystem/devices/i8042/serio1/subsystem/drivers/atkbd/serio0/input/input1/device' is part of the same file system loop as `/sys/bus/cpu/devices/cpu0/node0/memory0/subsystem/devices/memory2/firmware_node/subsystem/devices/PNP0303:00/physical_node/subsystem/devices/00:06/tty/ttyS0/subsystem/ttyS2/device/subsystem/devices/i8042/serio1/subsystem/drivers/atkbd/serio0'.

我不知道是什么File system loop,但我想这与我所寻找的内容无关。因此,我决定通过命令过滤此错误:

sudo find -L / -samefile /usr/include/freetype2/ft2build.h |grep -v File system loop detected

但这并不能消除输出中的错误。

我的 grep是什么File system loop以及有什么问题?

答案1

这是一个文件系统循环:

/lib/recovery-mode/recovery-mode -> /lib/recovery-mode

如您所见,/lib/recovery-mode/recovery-mode这是该目录的符号链接/lib/recovery-mode

find已在 中搜索/lib/recovery-mode,因此没有必要再按照符号链接/lib/recovery-mode/recovery-mode在同一个位置进行搜索/lib/recovery-mode

find这就是显示文件系统循环消息的原因,您可以忽略此消息,因为find将跳过此符号链接并继续继续。

错误显示在 STDERR 上,而不是 STDOUT 上,因此您需要grep在 STDERR 上使用。

有很多方法可以实现这一点,最简单的方法是将 STDOUT 和 STDERR 都发送到grep

sudo find .... |& grep -v 'File system loop detected'

相关内容