Bash

find 命令沒有遞歸地在 /sys/devices/ 中找到文件

  • October 19, 2020

我用來在目錄中find查找文件cpuinfo_max_freq``/sys/devices/

這是我使用的命令,它沒有顯示任何輸出:

find /sys/devices/ -name 'cpuinfo_max_freq'

我也嘗試添加 -L 標誌來搜尋連結目錄,但它似乎不起作用,並且不斷輸出並且永遠不會完成。但是在根目錄 ( /) 中進行查找工作正常。

這是實際文件的路徑:

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

/sys/devices/system/cpu/cpu1/cpufreq/cpuinfo_max_freq路徑包含符號連結組件:

$ namei -l /sys/devices/system/cpu/cpu1/ **cpufreq** /cpuinfo_max_freq
f: /sys/devices/system/cpu/cpu1/cpufreq/cpuinfo_max_freq
drwxr-xr-x root root /
dr-xr-xr-x 根根系統
drwxr-xr-x root 根設備
drwxr-xr-x root 根系統
drwxr-xr-x root 根 cpu
drwxr-xr-x root 根 cpu1
lrwxrwxrwx根 根**cpufreq -> ../cpufreq/policy1**
drwxr-xr-x 根根..
drwxr-xr-x root 根 cpufreq
drwxr-xr-x 根根策略1
-r--r--r-- 根根 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/devices包含/sys許多符號連結中,其中一些會導致循環。

引用自:https://unix.stackexchange.com/questions/615195