
このコマンドの結果をフィルタリングする必要があります:
lsblk -rno "name,size,mountpoint,fstype" | grep -v 'sda'
私のコンピューターで上記のコマンドを実行した結果を示します。
sdb 223,6G
sdb1 179,8G /VMs/qemu ext4
sdb2 29,5G [SWAP] swap
sdc 15G ntfs
sdd 7,5G
sdd1 7,5G ext4
必要なフィルタリングは、マウントされていないもの、およびファイル システムを残すものだけです。したがって、理想的には、フィルタリング後に残るのは次のようになります。
sdc 15G ntfs
sdd1 7,5G ext4
私の目標は、USB ドライブをマウントするためのスクリプト (dmenu の rofi を使用して呼び出すことができる) を作成することです。ネット上で解決策をいくつか見つけましたが、これらの問題は、すべてのドライブにパーティションがあることを前提としていることです。ご覧のとおり、私は最初にパーティション分割せずにフォーマットされた外付けドライブ (たとえば、ntfs) を使用しています。そのため、この変更が必要です。
答え1
要件を単純化して、マウントされていないがファイルシステムを含むパーティションのリストにする場合は、次のようにします。awk
lsblk -rno name,size,mountpoint,fstype | awk 'NF==3 {print $1, $3}'
フィルターは、スペースで区切られた 3 つのawk
フィールドを持つ行を考慮しlsblk
、最初のフィールドと 3 番目のフィールドを出力します。
サンプル出力
lsblk -rno name,size,mountpoint,fstype
mmcblk0 29.8G
mmcblk0p1 63M vfat
mmcblk0p2 4G / ext4
lsblk -rno name,size,mountpoint,fstype | awk 'NF==3 {print $1, $3}'
mmcblk0p1 vfat
サイズも必要な場合は、出力セレクタを省略します
lsblk -rno name,size,mountpoint,fstype | awk 'NF==3'
mmcblk0p1 63M vfat