zhuazai:https://blog.csdn.net/sty945/article/details/79830915
前言
最近几乎大部分工作都在linux上进行的,发现在工作过程中经常要查看当前目录下的文件大小,但是每次都是用ls
命令每次都是以字节形式显示的,看起来特别不爽。于是开始了再linux下如何看起来很爽文件显示之旅。
ls命令
这个命令可能是我们在linux环境下最常用的命令了,闲来没事, ls
一下。用ls
命令查看文件夹下的文件信息一般是这样的
-
[email protected]:~/styfiles$ ls demo.sh fastAI pythonFile styNet teamviewer_amd64.deb
ls -a
我们只能看见文件夹下的显示当前目录下非隐藏的文件与目录信息
我们用ls -a
显示当前目录下包括隐藏文件在内的所有文件列表
-
[email protected]:~/styfiles$ ls -a . .. demo.sh fastAI .ipynb_checkpoints pythonFile styNet teamviewer_amd64.deb
ls -l
我们用ls -l
输出长格式列表,信息包含了文件的大小和类型
[email protected]:~/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
的基础上还可以显示隐藏文件
[email protected]:~/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命令
这个命令主要是显示目录或者文件所占空间
[[email protected] 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
只显示总和的大小
[email protected]:~/styfiles$ du -s 2747588 .
du -s *
使用du -s *
将显示所有文件的大小
[email protected]:~/styfiles$ du -s * 4 demo.sh 2722128 fastAI 15292 pythonFile 24 styNet 10132 teamviewer_amd64.deb
du -s * | sort -nr
使用du -s * | sort -nr
我们可以将文件从大到小显示出来
[email protected]:~/styfiles$ du -s * | sort -nr 2722128 fastAI 15292 pythonFile 10132 teamviewer_amd64.deb 24 styNet 4 demo.sh
但是这是以kb形式显示文件大小的,比如我想知道fastAI这个文件夹多大,我肯定希望以MB或者GB为单位。使用du -sh *
是可以这么人性化的显示的
[email protected]:~/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大小了却排到了最后面,这显示不是我们想要的
[email protected]:~/styfiles$ du -sh * | sort -nr 24K styNet 15M pythonFile 9.9M teamviewer_amd64.deb 4.0K demo.sh 2.6G fastAI
我的DIY_Bash
但是我想要的结果是这样的:
[email protected]:~/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
显示当前文件的路径是多少,比如我的电脑的路径是:
[email protected]:~/DIY_Bash$ pwd /media/home/sty/DIY_Bash
然后我们打开~/.bash_profile
[email protected]:~$ vim ~/.bash_profile
在~/.bash_profile
中按照下面的样式加入刚才显示的目录
export PATH=/media/home/sty/DIY_Bash:$PATH
然后执行下面的命令
source ~/.bash_profile
重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录
然后我们就可以在任意的文件夹下使用我们的脚本了
比如我们只需要在输入sorf_file.sh
就可以以从存储大到小的顺序而且人性化的显示当前文件夹的非隐藏目录的大小了。
注意
如果你出现出现类似下面的错误:Permission denied
[email protected]:~$ sort_file.sh -bash: /media/home/sty/DIY_Bash/sort_file.sh: Permission denied
这是由于这个脚本没有权限的原因,你只需要进入DIY_Bash文件夹执行下面的命令即可,
这将为DIY_Bash下的脚本都赋予执行权限:
chmod +x *
原文地址:https://www.cnblogs.com/lxwphp/p/11348036.html