zoukankan      html  css  js  c++  java
  • linux系统下以存储从大到小并以K,M,G为单位的方式查看当前目录下的文件信息...

    前言

    最近几乎大部分工作都在linux上进行的,发现在工作过程中经常要查看当前目录下的文件大小,但是每次都是用ls命令每次都是以字节形式显示的,看起来特别不爽。于是开始了再linux下如何看起来很爽文件显示之旅。

    ls命令

    这个命令可能是我们在linux环境下最常用的命令了,闲来没事, ls一下。用ls命令查看文件夹下的文件信息一般是这样的

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

    ls -a

    我们只能看见文件夹下的显示当前目录下非隐藏的文件与目录信息 
    我们用ls -a显示当前目录下包括隐藏文件在内的所有文件列表

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

    ls -l

    我们用ls -l 输出长格式列表,信息包含了文件的大小和类型

    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的基础上还可以显示隐藏文件

    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命令

    这个命令主要是显示目录或者文件所占空间

    [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只显示总和的大小

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

    du -s *

    使用du -s *将显示所有文件的大小

    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我们可以将文件从大到小显示出来

    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 *
  • 相关阅读:
    为什么
    android自定义控件,其三个父类构造方法有什么区别
    MocorDroid编译工程快速建立编译环境
    通话挂断后如何提示用户通话时长
    incallui中如何查询联系人数据
    protected-broadcast的作用
    ubuntu12.04安装openjdk-7
    Android JNI的使用浅析
    android listen
    android:minSdkVersion的总结
  • 原文地址:https://www.cnblogs.com/lxwphp/p/15453175.html
Copyright © 2011-2022 走看看