linux系統下以存儲從大到小並以K,M,G爲單位的方式查看當前目錄下的文件信息

zhuazai:http://www.javashuo.com/article/p-vtttlxgc-bm.htmlphp

 

 

前言

最近幾乎大部分工做都在linux上進行的,發如今工做過程當中常常要查看當前目錄下的文件大小,可是每次都是用ls命令每次都是以字節形式顯示的,看起來特別不爽。因而開始了再linux下如何看起來很爽文件顯示之旅。python

ls命令

這個命令多是咱們在linux環境下最經常使用的命令了,閒來沒事, ls一下。用ls命令查看文件夾下的文件信息通常是這樣的linux

  • sty@dl-server01:~/styfiles$ ls
    demo.sh  fastAI  pythonFile  styNet  teamviewer_amd64.deb

ls -a

咱們只能看見文件夾下的顯示當前目錄下非隱藏的文件與目錄信息 
咱們用ls -a顯示當前目錄下包括隱藏文件在內的全部文件列表git

  • sty@dl-server01:~/styfiles$ ls -a
    .  ..  demo.sh  fastAI  .ipynb_checkpoints  pythonFile  styNet  teamviewer_amd64.deb

ls -l

咱們用ls -l 輸出長格式列表,信息包含了文件的大小和類型github

sty@dl-server01:~/styfiles$ ls -l
total 10148
-rw-rw-r--  1 sty sty      394 4月   5 20:42 demo.sh
drwxrwxr-x  5 sty sty     4096 1月  14 18:20 fastAI
drwxrwxr-x 12 sty sty     4096 4月   5 21:48 pythonFile
drwxrwxr-x  3 sty sty     4096 4月   5 20:26 styNet
-rw-rw-r--  1 sty sty 10374958 12月 19 15:25 teamviewer_amd64.deb

ll

我平時用的更多的多是ll,這個在ls -l的基礎上還能夠顯示隱藏文件shell

sty@dl-server01:~/styfiles$ ll
total 10160
drwxrwxr-x  6 sty sty     4096 4月   5 22:01 ./
drwxr-xr-x  6 sty sty     4096 4月   5 21:57 ../
-rw-rw-r--  1 sty sty      394 4月   5 20:42 demo.sh
drwxrwxr-x  5 sty sty     4096 1月  14 18:20 fastAI/
drwxr-xr-x  2 sty sty     4096 1月  14 16:48 .ipynb_checkpoints/
drwxrwxr-x 12 sty sty     4096 4月   5 21:48 pythonFile/
drwxrwxr-x  3 sty sty     4096 4月   5 20:26 styNet/
-rw-rw-r--  1 sty sty 10374958 12月 19 15:25 teamviewer_amd64.deb

du命令

這個命令主要是顯示目錄或者文件所佔空間vim

[root@localhost test]# du
608 ./test6
308 ./test4
4 ./scf/lib
4 ./scf/service/deploy/product
4 ./scf/service/deploy/info
12 ./scf/service/deploy
16 ./scf/service
4 ./scf/doc
4 ./scf/bin
32 ./scf
8 ./test3
1288 .

du -s

使用du -s只顯示總和的大小bash

sty@dl-server01:~/styfiles$ du -s
2747588 .

du -s *

使用du -s *將顯示全部文件的大小markdown

sty@dl-server01:~/styfiles$ du -s *
4       demo.sh
2722128 fastAI
15292   pythonFile
24      styNet
10132   teamviewer_amd64.deb

du -s * | sort -nr

使用du -s * | sort -nr咱們能夠將文件從大到小顯示出來spa

sty@dl-server01:~/styfiles$ du -s * | sort -nr
2722128 fastAI
15292   pythonFile
10132   teamviewer_amd64.deb
24      styNet
4       demo.sh

可是這是以kb形式顯示文件大小的,好比我想知道fastAI這個文件夾多大,我確定但願以MB或者GB爲單位。使用du -sh *是能夠這麼人性化的顯示的

sty@dl-server01:~/styfiles$ du -sh *
4.0K    demo.sh
2.6G    fastAI
15M     pythonFile
24K     styNet
9.9M    teamviewer_amd64.deb

可是沒有排序,咱們再用組合命令du -sh * | sort -nr進行排序以後發現排序是以數字大小排序的,咱們fastAI文件夾都2.6G大小了卻排到了最後面,這顯示不是咱們想要的

sty@dl-server01:~/styfiles$ du -sh * | sort -nr
24K     styNet
15M     pythonFile
9.9M    teamviewer_amd64.deb
4.0K    demo.sh
2.6G    fastAI

個人DIY_Bash

可是我想要的結果是這樣的:

sty@dl-server01:~/styfiles$ sort_file.sh
2.60G            fastAI
14.93M           pythonFile
9.89M            teamviewer_amd64.deb
24k              styNet
4k               demo.sh

其實這個咱們能夠經過du 和awk命令組合完成

#!/bin/sh

# description: Sort the files in your directory by size, and Display their storage size directly
# user: sty
# blog: https://blog.csdn.net/sty945
# github: https://github.com/sty945


du -s * | sort -nr | awk -F'\t' '{if(1024 * 1024 * 1024 * 1024 > $1 && $1 >= 1024 * 1024 * 1024) {printf "%.2fT\t\t %-2s\n", $1/(1024 * 1024 * 1024), $2} else if(1024 * 1024 * 1024 > $1 && $1 >= 1024 * 1024) {printf "%.2fG\t\t %-2s\n", $1/(1024 * 1024), $2} else if (1024 * 1024 > $1 && $1 >= 1024) {printf "%.2fM\t\t %-2s\n", $1/1024, $2} else {printf "%sk\t\t %-2s\n", $1, $2}}'

我已經將該腳本寫入shell腳本,並上傳到Github之上地址以下,而且裏面也將詳細寫出瞭如何在linux任何地方均可以隨時使用這個腳本,就像你使用linux命令同樣方便: 
DIY_Bash 
歡迎你們fork這個文件夾,讓裏面的內容豐富起來,若是以爲不錯,請點個star,鼓勵我一下

在linux任意位置均可以使用這個目錄下的腳本

咱們從Github中下載文件夾到本身的電腦上,解壓後,進入文件夾,而後敲命令pwd顯示當前文件的路徑是多少,好比個人電腦的路徑是:

sty@dl-server01:~/DIY_Bash$ pwd
/media/home/sty/DIY_Bash

而後咱們打開~/.bash_profile

sty@dl-server01:~$ vim ~/.bash_profile

~/.bash_profile中按照下面的樣式加入剛纔顯示的目錄

export PATH=/media/home/sty/DIY_Bash:$PATH

而後執行下面的命令

source ~/.bash_profile

從新執行剛修改的初始化文件,使之當即生效,而沒必要註銷並從新登陸

而後咱們就能夠在任意的文件夾下使用咱們的腳本了 
好比咱們只須要在輸入sorf_file.sh就能夠以從存儲大到小的順序並且人性化的顯示當前文件夾的非隱藏目錄的大小了。

注意

若是你出現出現相似下面的錯誤:Permission denied

sty@dl-server01:~$ sort_file.sh
-bash: /media/home/sty/DIY_Bash/sort_file.sh: Permission denied

這是因爲這個腳本沒有權限的緣由,你只須要進入DIY_Bash文件夾執行下面的命令便可, 
這將爲DIY_Bash下的腳本都賦予執行權限:

chmod +x *
相關文章
相關標籤/搜索