find コマンドの予期しない動作

find コマンドの予期しない動作

次のコマンドと出力を確認してください。

$ cat /sys/class/graphics/fb0/virtual_size
  1920,1080

$ file /sys/class/graphics/fb0/virtual_size
  /sys/class/graphics/fb0/virtual_size: ASCII text

$ grep -H 1920 /sys/class/graphics/fb0/virtual_size
  /sys/class/graphics/fb0/virtual_size:1920,1080

したがって、virtual_sizeはプレーンテキストファイルです。

$ find /sys -type f -exec grep -H 1920 '{}' \; 2> /dev/null
  /sys/fs/cgroup/blkio/blkio.throttle.io_service_bytes:8:0 Read 273361920
  /sys/devices/pci0000:00/0000:00:02.0/drm/card0/card0-eDP-1/modes:1920x1080
  /sys/devices/pci0000:00/0000:00:02.0/graphics/fb0/modes:U:1920x1080p-0
  /sys/devices/pci0000:00/0000:00:02.0/graphics/fb0/virtual_size:1920,1080
  /sys/module/r8169/coresize:81920

しかし、findコマンドが/sys/class/graphics/fb0/virtual_sizeファイルを見つけることができないのは、別のテキストファイルだけです。そうですか?

答え1

おそらく/sys/class/graphics/fb0/virtual_size はい /sys/devices/pci0000:00/0000:00:02.0/graphics/fb0/virtual_size

readlink -f /sys/class/graphics/fb0/virtual_size確認してください。

namei -l /sys/class/graphics/fb0/virtual_sizeこれがどのように起こるかを確認してください(パスコンポーネントの少なくとも1つは/sys/class/graphics/fb0/virtual_sizeシンボリックリンクでなければなりません)。

find-Lオプション(以前の述部)を使用しない限り、ディレクトリツリーを下げるとシンボリックリンクは続きません-follow

しかし、これを使っても/sysシンボリックリンクスパゲッティ料理なので、どこにも行けません。

関連情報