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

举报
lxw1844912514 发表于 2022/03/27 02:57:12 2022/03/27
【摘要】 zhuazai:https://blog.csdn.net/sty945/article/details/79830915   前言ls命令 ls -als -llldu命令 du...

zhuazai:https://blog.csdn.net/sty945/article/details/79830915

 

 

前言

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

ls命令

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

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

ls -a

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

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

ls -l

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


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

ll

我平时用的更多的可能是ll,这个在ls -l的基础上还可以显示隐藏文件


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

du命令

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


      
  1. [root@localhost test]# du
  2. 608 ./test6
  3. 308 ./test4
  4. 4 ./scf/lib
  5. 4 ./scf/service/deploy/product
  6. 4 ./scf/service/deploy/info
  7. 12 ./scf/service/deploy
  8. 16 ./scf/service
  9. 4 ./scf/doc
  10. 4 ./scf/bin
  11. 32 ./scf
  12. 8 ./test3
  13. 1288 .
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

du -s

使用du -s只显示总和的大小


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

du -s *

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


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

du -s * | sort -nr

使用du -s * | sort -nr我们可以将文件从大到小显示出来


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

但是这是以kb形式显示文件大小的,比如我想知道fastAI这个文件夹多大,我肯定希望以MB或者GB为单位。使用du -sh *是可以这么人性化的显示的


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

但是没有排序,我们再用组合命令du -sh * | sort -nr进行排序之后发现排序是以数字大小排序的,我们fastAI文件夹都2.6G大小了却排到了最后面,这显示不是我们想要的


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

我的DIY_Bash

但是我想要的结果是这样的:


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

其实这个我们可以通过du 和awk命令组合完成


      
  1. #!/bin/sh
  2. # description: Sort the files in your directory by size, and Display their storage size directly
  3. # user: sty
  4. # blog: https://blog.csdn.net/sty945
  5. # github: https://github.com/sty945
  6. 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}}'
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

我已经将该脚本写入shell脚本,并上传到Github之上地址如下,并且里面也将详细写出了如何在linux任何地方都可以随时使用这个脚本,就像你使用linux命令一样方便: 
DIY_Bash 
欢迎大家fork这个文件夹,让里面的内容丰富起来,如果觉得不错,请点个star,鼓励我一下

在linux任意位置都可以使用这个目录下的脚本

我们从Github中下载文件夹到自己的电脑上,解压后,进入文件夹,然后敲命令pwd显示当前文件的路径是多少,比如我的电脑的路径是:


      
  1. sty@dl-server01:~/DIY_Bash$ pwd
  2. /media/home/sty/DIY_Bash
  • 1
  • 2

然后我们打开~/.bash_profile

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

~/.bash_profile中按照下面的样式加入刚才显示的目录

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

然后执行下面的命令

source ~/.bash_profile
     
  • 1

重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录

然后我们就可以在任意的文件夹下使用我们的脚本了 
比如我们只需要在输入sorf_file.sh就可以以从存储大到小的顺序而且人性化的显示当前文件夹的非隐藏目录的大小了。

注意

如果你出现出现类似下面的错误:Permission denied


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

这是由于这个脚本没有权限的原因,你只需要进入DIY_Bash文件夹执行下面的命令即可, 
这将为DIY_Bash下的脚本都赋予执行权限:

 chmod +x *
     
  • 1

文章来源: blog.csdn.net,作者:lxw1844912514,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/lxw1844912514/article/details/100028596

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。