/ 아래에 8개의 디렉터리가 있고 그 중 5개가 다른 마운트 지점에 있는 경우 /
/dev/md/dsk/d0 49G 32G 17G 66% /
/dev/md/dsk/d65 76G 77M 75G 1% /u03
/dev/md/dsk/d64 345G 76G 266G 23% /u02
/dev/md/dsk/d5 76G 77M 75G 1% /u01
/dev/dsk/emcpower0g 591G 288G 297G 50% /db
/dev/dsk/emcpower1g 591G 116G 469G 20% /db2
ls -l을 실행하세요.
bash-3.2# pwd
/
bash-3.2# ls -l
drwxr-xr-x 3 root sys 512 Jun 24 2014 boot
**drwxr-xr-x 5 root root 512 Sep 16 2014 db
drwxr-xr-x 6 root root 512 Sep 16 2014 db2
drwxr-xr-x 19 root sys 5120 Jul 11 22:57 dev
drwxr-xr-x 2 root sys 512 Jul 11 16:17 devices
drwxr-xr-x 3 root root 512 Jun 25 2014 u01
drwxr-xr-x 4 root root 512 Jul 11 17:08 u02
drwxr-xr-x 3 root root 512 Sep 3 2014 u03
표시를 필터링/목록 표시하는 방법
a) 해당 파일과 /mountpoint(/boot, /dev, /devices..) 아래에 생성된 다른 3개의 디렉터리만
b) / 아래에 5개의 디렉터리가 있지만 다른 지점에 마운트됨(예: /db, /db2, /u01..)
답변1
Linux 시스템에서는 다음을 사용할 수 있습니다 findmnt
.
set ''
for r in /*
do findmnt "$r" ||
! set '' "$r$@" &&
ls "$r"
done
ls
이 명령은 다음을 수행합니다 .다른준비가 되면 mount 및 모든 /
루트 마운트 파일 이름을 사용할 수 있습니다 . $@
따라서 당신이 할 일을 나열하십시오:
ls "$@"
답변2
질문 b의 경우(마운트 디렉터리는 루트 디렉터리와 다릅니다):
{
stat --printf='%d\n' /
find / -mount -maxdepth 1 -type d -printf '%D%p\n'
} | awk -F/ 'NR==1{root=$1}; $2!=""&&$1!=root{print "/"$2}'
stat
루트 디바이스의 10진수 디바이스 번호를 내뱉습니다. 그런 다음 명령 은 10진수 장치 번호와 함께 find
바로 아래에 디렉터리를 나열합니다 . /
두 명령의 출력은 으로 전송됩니다 awk
. awk
장치 번호가 루트 장치와 같지 않으면 디렉터리가 인쇄됩니다. 첫 번째 질문에 대한 답변으로 $2!=""&&
실제 루트 디렉터리를 필터링하는 데 사용됩니다.
프로그램의 마지막 항목을 !=
첫 번째 질문의 디렉토리 찾기 부분으로 변경합니다.==
awk