在 /sys/class 中查找并没有显示所有内容,为什么?

在 /sys/class 中查找并没有显示所有内容,为什么?

像其他人一样,我有时不得不列出文件系统中某个点的目录结构。我这样做,find /path/in/fs/结果如下:

/path/in/fs/subfolder1
/path/in/fs/subfolder1/file1
/path/in/fs/subfolder1/subfolder2/yetanothefile
/path/in/fs/subfolder1/subfolder2/yetanothefile2
/path/in/fs/subfolder1/subfolder2/yetanothefile3
/path/in/fs/subfolder1/file2

在某种程度上,这使我免于无休止地迭代cdls

现在我想列出/sys/class路径中的目录结构,但我认为它不够。接下来的两个命令显示了奇怪的行为:

  • (1) 使用cdls
    root@freak:/sys/class/hwmon# ls
    hwmon0 hwmon1 hwmon2
    root@freak:/sys/class/hwmon# cd hwmon0
    root@freak:/sys/class/hwmon/hwmon0# ls
    名称 电源子系统 temp1_crit temp1_input uevent
  • find(2)在同一个地方使用上述命令
    root@freak:/sys/class/hwmon# 查找 .
    ./hwmon0
    ./hwmon1
    ./hwmon2

正如你所看到的,在我看来,这find并没有向我展示一切,我发现这是一种奇怪和令人惊讶的行为。现在我知道 /sys/ 下面的东西有些特别。但一切仍然按部就班cd ls。有人有答案为什么会发生这种情况,甚至更好的是我如何才能使 find 不忽略 ./hwmon0 ./hwmon1 ... 等中的内容?

答案1

当你跑步时

find .

那么它会-P默认使用 Option ,它实际上是运行的find -P .

摘自man find

   -P     Never follow symbolic links.  This  is  the  default  behaviour.
      When find examines or prints information a file, and the file is
      a symbolic link, the information used shall be  taken  from  the
      properties of the symbolic link itself.

这就是为什么 find 不会向您显示下面的所有内容/sys/class/hwmon,如果您进入内部并检查它们都是符号链接,因此您只需要使用进行检查find . -follow

欲了解更多信息,请检查man find

相关内容