
如何省略group
輸出中的列ls -hal
?
我正在使用ls -hal|cut -f4 --complement -d ' '
並且它在大多數情況下都可以找到,但是如果我運行它,/
我會得到亂碼輸出:
drwxr-xr-x 25 root 4.0K Dec 21 06:08 .
drwxr-xr-x 25 root 4.0K Dec 21 06:08 ..
drwxr-xr-x root root 4.0K Jan 12 06:17 bin
drwxr-xr-x root root 4.0K Jan 16 10:36 boot
drwxrwxr-x root root 4.0K May 1 2018 cdrom
-rw------- root root 56M May 1 2018 core
drwxr-xr-x 20 root 4.7K Jan 6 17:54 dev
drwxr-xr-x root root 4.0K Oct 9 15:14 .dotnet
drwxr-xr-x 154 root 12K Jan 16 10:36 etc
drwxr-xr-x root root 4.0K Nov 24 19:39 home
(我不明白為什麼會發生這種情況,ls -hal
僅給出
drwxr-xr-x 25 root root 4.0K Dec 21 06:08 .
drwxr-xr-x 25 root root 4.0K Dec 21 06:08 ..
drwxr-xr-x 2 root root 4.0K Jan 12 06:17 bin
drwxr-xr-x 3 root root 4.0K Jan 16 10:36 boot
drwxrwxr-x 2 root root 4.0K May 1 2018 cdrom
-rw------- 1 root root 56M May 1 2018 core
drwxr-xr-x 20 root root 4.7K Jan 6 17:54 dev
drwxr-xr-x 154 root root 12K Jan 16 10:36 etc
)
我也嘗試過,awk '{print $1,$2,$3,$5,$6,$7,$8,$9}'
但這總是弄亂對齊:
drwxr-xr-x 25 root 4.0K Dec 21 06:08 .
drwxr-xr-x 25 root 4.0K Dec 21 06:08 ..
drwxr-xr-x 2 root 4.0K Jan 12 06:17 bin
drwxr-xr-x 3 root 4.0K Jan 16 10:36 boot
drwxrwxr-x 2 root 4.0K May 1 2018 cdrom
-rw------- 1 root 56M May 1 2018 core
drwxr-xr-x 20 root 4.7K Jan 6 17:54 dev
答案1
答案2
在你的情況下,你的問題是結果中有多個單一空格 ls -alh /。這意味著字段 4 是不同的。
您可以做的是將空間聚合為一個:
ls -alh / | sed 's/\s\s*/ /g' | cut -f4 -d' ' --complement
但請注意,它還會刪除檔案名稱中任何潛在的雙空格。
您還可以從這個答案中了解更多信息這裡:
友善提醒查看您的命令選項。在本例中,只需使用 JigglyNaga 給出的命令即可輕鬆實現結果。