find 命令递归找不到 /sys/devices/ 中的文件

find 命令递归找不到 /sys/devices/ 中的文件

我用来在目录中find查找文件cpuinfo_max_freq/sys/devices/

这是我使用的命令,它没有向我显示任何输出:

find /sys/devices/ -name 'cpuinfo_max_freq'

我还尝试添加 -L 标志来在链接目录内进行搜索,但它似乎不起作用,并且不断输出并且永远不会完成。但在根目录 ( ) 中查找效果/很好。

这是实际文件的路径:

/sys/devices/system/cpu/cpu1/cpufreq/cpuinfo_max_freq

答案1

/sys/devices/system/cpu/cpu1/cpufreq/cpuinfo_max_freq路径包含符号链接组件:

$ namei -l /sys/devices/system/cpu/cpu1/CPU频率/cpuinfo_最大频率
f: /sys/devices/system/cpu/cpu1/cpufreq/cpuinfo_max_freq
drwxr-xr-x根根/
dr-xr-xr-x root 根系统
drwxr-xr-x root 根设备
drwxr-xr-x root 根系统
drwxr-xr-x root 根 cpu
drwxr-xr-x 根 根 cpu1
lrwxrwxrwx 根 根cpufreq -> ../cpufreq/policy1
drwxr-xr-x 根 根 ..
drwxr-xr-x 根 根 cpufreq
drwxr-xr-x root 根策略1
-r--r--r-- root root cpuinfo_max_freq

相应文件的规范路径是:

$ readlink -f /sys/devices/system/cpu/cpu1/cpufreq/cpuinfo_max_freq
/sys/devices/system/cpu/cpufreq/policy1/cpuinfo_max_freq

该路径是以下返回的路径之一:

$ 查找 /sys/devices/ -name 'cpuinfo_max_freq'
/sys/devices/system/cpu/cpufreq/policy6/cpuinfo_max_freq
/sys/devices/system/cpu/cpufreq/policy4/cpuinfo_max_freq
/sys/devices/system/cpu/cpufreq/policy2/cpuinfo_max_freq
/sys/devices/system/cpu/cpufreq/policy0/cpuinfo_max_freq
/sys/devices/system/cpu/cpufreq/policy7/cpuinfo_max_freq
/sys/devices/system/cpu/cpufreq/policy5/cpuinfo_max_freq
/sys/devices/system/cpu/cpufreq/policy3/cpuinfo_max_freq
/sys/devices/system/cpu/cpufreq/policy1/cpuinfo_max_freq

除非您传递-L选项或-follow谓词,否则find在以您作为参数给出的路径为根的目录树下降时不会遵循符号链接。

find -L会最终找到它(以及/sys/devices/system/node/node0/cpu1/cpufreq/cpuinfo_max_freq/sys/devices/system/memory/memory8/node0/cpu1/cpufreq/cpuinfo_max_freq/sys/devices/system/node/node0/subsystem/devices/node0/subsystem/devices/node0/cpu1/cpufreq/cpuinfo_max_freq... 和无数其他路径),但findwith-L也会迷失在/sys/devicesas/sys包含许多符号链接中,其中一些会导致循环。

答案2

我认为您需要指定您正在寻找“常规文件”(-type f):

$ find /sys/devices -name 'cpuinfo_max_freq' -type f 
/sys/devices/system/cpu/cpufreq/policy0/cpuinfo_max_freq

这在我的 Debian/RPi 操作系统上运行良好

如果你想尝试一下macOS,忘了它吧……find是一种不同的动物macOS

相关内容