listar diretórios sob / que não estão no mesmo ponto de montagem

3

Se eu tiver 8 diretórios em /, com 5 diretórios em diferentes pontos de montagem, então /

/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

Fazendo um 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

Como faço para filtrar / listar para mostrar

a) apenas esses arquivos e os outros 3 diretórios (/ boot, / dev, / devices ..) que são criados sob / mountpoint

b) os 5 diretórios (por exemplo, / db, / db2, / u01 ..) que estão sob / mas são montados em diferentes mointpoints

    
por Noob 13.07.2015 / 05:37

2 respostas

1

Em um sistema Linux, você pode usar findmnt :

set ''
for r in /*
do  findmnt "$r"   || 
  ! set '' "$r$@"  &&
    ls "$r"
done

Esse comando fará o ls para as montagens outras , e todos os nomes de arquivos de% root / estarão disponíveis em $@ quando você estiver pronto. Então, para listar as que você faria:

ls "$@"
    
por 13.07.2015 / 11:19
0

Para a pergunta a:

{
  stat --printf='%d\n' /
  find / -mount -maxdepth 1 -type d -printf '%D/%p\n'
} | awk -F/ 'NR==1{root=$1}; $1!=root{print "/"$2}'

stat exibe o número decimal do dispositivo raiz. Em seguida, o comando find lista os diretórios diretamente sob / , junto com o número decimal do dispositivo. A saída desses dois comandos é enviada para awk . O awk imprime os diretórios se o número do dispositivo não for igual ao dispositivo raiz.

Altere != para == no programa awk para responder à sua segunda pergunta.

    
por 13.07.2015 / 11:00

Tags