Linux中利用awk命令計算文件的大小(上)

AWK Linux Ubuntu 小朋友齊打交 Linux系統學習 2017-04-28

Linux中利用awk命令計算文件的大小(上)

有時你可能想知道某個目錄下文件的大小,此時自然會想到帶有-l選項的ls命令。但是,這個命令除了文件名和文件大小之外,還要顯示其他很多信息。因此,可以將這個ls命令的結果通過管道送給awk命令作進一步的處理。使用組合命令顯示/boot目錄中每一個文件的文件名和大小:

goddog@ubuntu:~$ ls -lF /boot | awk '{ print $9 " " $5}'

abi-4.10.0-19-generic 1433520

config-4.10.0-19-generic 206872

……

看上去有些凌亂啊。為了使awk命令的顯示結果更清晰,在awk命令中引入了以下兩個可以在print命令表達式中使用的特殊的字符序列:

  • \n: 產生一個回車操作

  • \t: 產生一個製表鍵

利用 \t 重新修改一下上面的例子,這次是文件大小在前,文件名隨後,文件大小和文件名由製表鍵隔開:

goddog@ubuntu:~$ ls -lF /boot | awk '{print $5 "\t" $9}'

1433520 abi-4.10.0-19-generic

206872 config-4.10.0-19-generic

……

上述的顯示結果是沒有順序的,如果你想了解文件磁盤空間的使用情況,最關心的就是大文件,因為只有大文件才對系統的衝擊比較大。假設你現在想知道最大的3個文件的大小並且顯示的結果是按文件由大到小的順序列出。命令如下:其中sort命令中的-r表示由大到小排序,-n表示按數字排序:

goddog@ubuntu:~$ ls -lF /boot | awk '{ print $5 "\t" $9}' | sort -rn | head -3

41306042 initrd.img-4.10.0-19-generic

7035296 vmlinuz-4.10.0-19-generic

2937260 System.map-4.10.0-19-generic

Linux中利用awk命令計算文件的大小(上)

如果想知道/boot中所有文件大小的總和,可以在awk命令中加入帶有變量和加法的表達式,命令如下:其中, totalsize是自定義的一個存儲文件大小總和的變量。awk命令中的命令表達式 totalsize = totalsize + $5 也可以縮寫成 totalsize += $5

goddog@ubuntu:~$ ls -lF /boot | awk '{ totalsize = totalsize + $5; print totalsize }'

0

1433520

……

53475010

結果除了顯示最後一行的所有文件大小的總和之外,還顯示了太多不重要的信息,為此,將這個命令的結果通過管道送給tail -1命令:

goddog@ubuntu:~$ ls -lF /boot | awk '{ totalsize += $5; print totalsize }' | tail -1

53475010

還有一種更好的方法是在awk命令中使用END關鍵字,命令如下:

goddog@ubuntu:~$ ls -lF /boot | awk '{ totalsize += $5} END { print totalsize }'

53475010

Linux中利用awk命令計算文件的大小(上)


今天就分享這麼多了,謝謝欣賞!^_~

相關推薦

推薦中...