
我需要過濾此命令的結果:
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
我的目標是有一個腳本(可以使用 dmenu 的 rofi 呼叫)來掛載 USB 驅動器。我在網路上找到了一些解決方案,但這些解決方案的問題是它們假設所有驅動器都有分區。如您所見,我使用未首先分割的外部磁碟機(例如 ntfs)。所以我需要這個改變。
答案1
如果您將要求簡化為未安裝但包含檔案系統的分割區列表,則可以使用awk
lsblk -rno name,size,mountpoint,fstype | awk 'NF==3 {print $1, $3}'
此篩選器考慮包含三個空格分隔欄位的awk
行,並列印第一個和第三個欄位。lsblk
樣本輸出
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