Ls

命令 sort -h 不返回合理的結果

  • January 17, 2019

我嘗試使用sort -h

algorithms@algorithms:~$ ls -lh /boot | sort -h
drwxr-xr-x 5 root root 4.0K Dec 28 16:19 grub
-rw------- 1 root root 4.2M Dec  5 13:10 System.map-4.18.0-13-generic
-rw------- 1 root root 4.2M Nov 14 21:30 System.map-4.18.0-12-generic
-rw------- 1 root root 8.2M Dec  5 13:11 vmlinuz-4.18.0-13-generic
-rw------- 1 root root 8.2M Nov 14 21:50 vmlinuz-4.18.0-12-generic
-rw-r--r-- 1 root root 1.5M Nov 14 21:30 abi-4.18.0-12-generic
-rw-r--r-- 1 root root 179K Jan 28  2016 memtest86+.bin
-rw-r--r-- 1 root root   17 Nov 14 21:30 retpoline-4.18.0-12-generic
-rw-r--r-- 1 root root 181K Jan 28  2016 memtest86+.elf
-rw-r--r-- 1 root root 181K Jan 28  2016 memtest86+_multiboot.bin
-rw-r--r-- 1 root root 212K Dec  5 13:10 config-4.18.0-13-generic
-rw-r--r-- 1 root root 212K Nov 14 21:30 config-4.18.0-12-generic
-rw-r--r-- 1 root root  38M Dec 18 15:47 initrd.img-4.18.0-12-generic
-rw-r--r-- 1 root root  38M Dec 28 16:25 initrd.img-4.18.0-13-generic

但是,它沒有合理排序。

參考手冊:

  -h, --human-numeric-sort
         compare human readable numbers (e.g., 2K 1G)

我的使用有什麼問題?

根據您的問題,您還必須提供列號,即

ls -lh /boot | sort -hk5

現在它將根據第 5 列(即代表大小的列)對輸出進行排序。

這裡的使用h是,如果你使用命令ls -lh /boot | sort -nk5,那麼它會根據數字排序而不考慮K,M,G,如果你使用h選項,那麼它會考慮K,M,G

如果您想排序,那麼更好的選擇是ls -lhS /bootroaima 建議的。

引用自:https://unix.stackexchange.com/questions/492181