Linux查看文件夹大小,并按文件夹创建时间排序

时间:2020-12-04 21:16:25

今天有如题的需求,但是光靠du命令似乎实现不了,于是查了下,最后使用du和sort组合完成需求,大家有更好的方法快点告诉我啊~

命令格式:

du [选项][文件]

命令功能:

显示每个文件和目录的磁盘使用空间。

命令参数:

-a或-all  显示目录中个别文件的大小。   

-b或-bytes  显示目录或文件大小时,以byte为单位。   

-c或--total  除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。 

-k或--kilobytes  以KB(1024bytes)为单位输出。

-m或--megabytes  以MB为单位输出。   

-s或--summarize  仅显示总计,只列出最后加总的值。

-h或--human-readable  以K,M,G为单位,提高信息的可读性。

-x或--one-file-xystem  以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。 

-L<符号链接>或--dereference<符号链接> 显示选项中所指定符号链接的源文件大小。   

-S或--separate-dirs   显示个别目录的大小时,并不含其子目录的大小。 

-X<文件>或--exclude-from=<文件>  在<文件>指定目录或文件。   

--exclude=<目录或文件>         略过指定的目录或文件。    

-D或--dereference-args   显示指定符号链接的源文件大小。   

-H或--si  与-h参数相同,但是K,M,G是以1000为换算单位。   

-l或--count-links   重复计算硬件链接的文件。 


1、使用du之后得到如下结果:

du -h --time --max-depth=1 .

输出当前目录的文件夹大小并显示时间:

Linux查看文件夹大小,并按文件夹创建时间排序


接着需要对时间进行排序,很自然想到管道:

管道符号,是unix一个很强大的功能,符号为一条竖线:"|"。
用法: command 1 | command 2 他的功能是把第一个命令command 1执行的结果作为command2的输入传给command 2
接着使用管道把du的结果交给sort排序

sort命令总结

功能:排序
语法:sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][--help][--verison][文件]

参数:
  -b   忽略每行前面开始出的空格字符。
  -d   排序时,处理英文字母、数字及空格字符外,忽略其他的字符。
  -f   排序时,将小写字母视为大写字母。
  -i   排序时,除了040至176之间的ASCII字符外,忽略其他的字符。
  -c   检查文件是否已经按照顺序排序。
  -m   将几个排序好的文件进行合并。
  -M  前面3个字母依照月份的缩写进行排序。
  -n   依照数值的大小排序。
  -o<输出文件>   将排序后的结果存入指定的文件。
  -r   以相反的顺序来排序。
  -t<分隔字符>   指定排序时所用的栏位分隔字符。
  -k 指定域
  --help   显示帮助。
  --version   显示版本信息。


2、命令组合如下:

du -h --time --max-depth=1 . |grep 'M'| sort -r -t $'\t' -k 2

其中grep 'M'是只取出M级别的文件夹进行排序,

sort中-t之后的$'\t'是指使用tab键分割字符串,-k 2 指按照分割后的第二列字符串来排序:

Linux查看文件夹大小,并按文件夹创建时间排序