前言
有時(shí)候在linux服務(wù)器上面會(huì)需要進(jìn)行排序的操作片任,肉眼看很容易出錯(cuò)或者疏忽础浮,結(jié)合sort命令可以高效的實(shí)現(xiàn)我們的排序效果刹悴,所以寫(xiě)一篇文章來(lái)整理一下sort的使用垛孔,希望對(duì)各位讀者有所幫助。
1命爬、查看當(dāng)前目錄中占用磁盤(pán)空間最大前三個(gè)的文件或者目錄
du -sh * | sort -hr | head -n 3
下面來(lái)分析一下命令
du -sh *:
du:磁盤(pán)使用情況(Disk Usage)命令曹傀,用于估算文件或目錄在磁盤(pán)上的使用空間。
-s:匯總(summarize)選項(xiàng)饲宛,表示只顯示當(dāng)前目錄的總磁盤(pán)使用量皆愉,不顯示子目錄的詳細(xì)使用情況。
-h:讓輸出以易讀的格式顯示,例如 K(千字節(jié))幕庐、M(兆字節(jié))久锥、G(吉字節(jié))等。
*:表示當(dāng)前目錄下的所有文件和目錄异剥。
sort -hr:
sort:對(duì)輸入進(jìn)行排序的命令瑟由。
-h:讓 sort 命令能夠識(shí)別易讀的數(shù)字格式(如 K、M冤寿、G)歹苦,并按數(shù)值大小排序。
-r:反向(reverse)排序督怜,即從大到小殴瘦。
head -n 3:
head:顯示文件的開(kāi)頭部分的命令。
-n 3:選項(xiàng)号杠,指定 head 命令顯示的行數(shù)
這里需要注意痴施,默認(rèn)情況sort命令比較原則是從首字符向后,依次按ASCII碼值進(jìn)行比較究流,最后將他們按升序輸出,如果結(jié)果集涉及K
动遭、M
芬探、G
這些單位換算,那么單純的數(shù)字排序是不能解決問(wèn)題的(當(dāng)然了厘惦,如果統(tǒng)一單位的話(huà)就沒(méi)有這個(gè)問(wèn)題存在了)偷仿,我們一定要加上h
參數(shù)讓sort命令幫助我們做單位的轉(zhuǎn)換
2、 使用-k
參數(shù)根據(jù)指定列進(jìn)行排序
默認(rèn)情況下宵蕉,sort是取第一列來(lái)進(jìn)行排序的酝静,如果我們希望排序的列不是在首列就會(huì)比較麻煩。
假如某個(gè)文件中有以下內(nèi)容羡玛,我們希望按照第二列的文件大小進(jìn)行排序别智,可以結(jié)合-k 2
進(jìn)行操作
100 52K dir1
200 6.8M dir2
300 4.0K file10
400 20K file4
500 16K file6
600 12K file8
700 4.0K fileName.txt
800 0 sortTest
cat sortTest | sort -k2 -hr
3、使用-n
參數(shù)標(biāo)識(shí)排序的規(guī)則為數(shù)值
正如上文所說(shuō)稼稿,sort
排序的方式默認(rèn)不會(huì)直接根據(jù)數(shù)值大小來(lái)排序薄榛,我們可以看下面這個(gè)例子,原始的文件內(nèi)容如下:
12
110
100
200
40
6
我們使用sort
命令不加任何參數(shù)進(jìn)行單純的排序
可以看到現(xiàn)在的結(jié)果就是按照默認(rèn)的排序方式來(lái)排序的让歼,但是很多時(shí)候?qū)τ跀?shù)字敞恋,我們會(huì)更希望根據(jù)數(shù)值大小來(lái)排序,這個(gè)時(shí)候我們可以使用
-n
來(lái)滿(mǎn)足我們的需要∧庇遥現(xiàn)在我們重新執(zhí)行sort -n
可以看到硬猫,這次的結(jié)果就已經(jīng)按照我們希望的數(shù)值大小進(jìn)行排序了