"find -xdev"가 모든 파티션의 디렉터리를 표시하는 이유는 무엇입니까?

"find -xdev"가 모든 파티션의 디렉터리를 표시하는 이유는 무엇입니까?

다른 질문을 조사하는 동안 발견했습니다(댓글 추가됨).

me@it: ~ $ date ; sudo find / -maxdepth 1 -xdev -type d | grep -ve '/$' | sort
Thu Aug 31 14:58:25 MST 2017
/bin
/boot         [*]
/.config
/dev
/etc
/home         [*]
/lib
/lib64
/lost+found
/media
/mnt
/opt
/proc
/root
/run
/sbin
/srv
/sys
/tmp
/usr
/var

하지만 나도 알아

me@it: ~ $ date ; lsblk
Thu Aug 31 14:52:58 MST 2017
NAME                  MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda                     8:0    0 465.8G  0 disk
├─sda1                  8:1    0  16.6G  0 part
├─sda2                  8:2    0  97.7G  0 part
├─sda3                  8:3    0   500M  0 part  /boot  [*]
├─sda4                  8:4    0     1K  0 part
└─sda5                  8:5    0   351G  0 part
  └─LVM2_crypt        254:0    0   351G  0 crypt
    ├─LVM2_crypt-swap 254:1    0   3.9G  0 lvm   [SWAP]
    ├─LVM2_crypt-root 254:2    0    20G  0 lvm   /
    └─LVM2_crypt-home 254:3    0 327.1G  0 lvm   /home  [*]
sr0                    11:0    1  1024M  0 rom

그렇다면 왜 합계가 find / -xdev표시 됩니까 ? FWIW, 및 순서가 문제를 일으키지 않는 것 같습니다./boot/home-maxdepth 1-xdev

me@it: ~ $ sudo su -
it ~ # date ; diff -wB <(find / -maxdepth 1 -xdev -type d | sort) <(find / -xdev -maxdepth 1 -type d | sort)
Thu Aug 31 15:09:53 MST 2017
it ~ # logout

내가 뭐 놓친 거 없니? 그렇지 않다면 위의 첫 번째 분출에서 왜 및 가 표시됩니까 /boot?/home

답변1

find -xdev 떨어지지 않는마운트 지점인 디렉토리로 이동했지만 여전히 나열됩니다. 이것을 시도하면 , 및 기타 마운트 지점이 나열되지만 해당 내용은 표시되지 않는 find / -xdev -maxdepth 2것을 볼 수 있습니다 ./dev/proc/sys

find그 이유는 마운트 지점으로 사용된 디렉토리가 아닌 마운트된 파일 시스템의 루트가 나열되어 있음에도 불구하고 마운트 지점이 상위 파일 시스템에 존재하기 때문이라고 생각합니다 .

마운트 지점을 생략하는 편리한 방법은 없습니다. 후처리를 수행하는 경우 df -P또는(Linux의 경우) 출력을 비교하여 순회된 루트와 동일한 장치에 있는지 확인할 수 있습니다 stat -c %d. 그러나 드문 경우지만 이는 상당한 오버헤드입니다.

답변2

boot루트 파일 시스템에 디렉터리가 있습니다.

find [...] -maxdepth 2

하지만 표시되어서는 안 됩니다 /boot.

관련 정보