/下に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
このコマンドは次のことを行います。その他準備ができたら、マウントとすべての/
ルートマウントファイル名を使用できます。$@
したがって、あなたがすることをリストしてください:
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