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

du与sort组合实战

今天有如题的需求,但是光靠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 .

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



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

管道符号,是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 系统中,可以通过 `du` 命令查看文件夹大小结合其他命令按大小排序。`du` 命令用于估算文件和目录的磁盘使用情况,提供有关单个文件和目录的大小信息,以及包含子目录在内的总大小 [^1]。 ### 查看文件夹大小大小排序的方法 #### 1. 使用 `du` 和 `sort` 命令组合 以下命令可以列出当前目录下所有子目录的大小按照大小进行排序: ```bash du -sh */ | sort -h ``` - `du -sh */`: - `-s` 表示汇总每个参数总计。 - `-h` 以易读的方式显示大小(例如,1K、234M、2G)。 - `*/` 匹配当前目录下的所有子目录。 - `sort -h`: 按照人类可读的数值格式对结果进行排序。 #### 2. 显示更大的文件夹限制输出数量 如果只希望看到占用空间最多的前几个目录,可以结合 `head` 命令: ```bash du -sh */ | sort -hr | head -n 10 ``` - `-r` 参数使 `sort` 反向排序(从大到小)。 - `head -n 10` 显示前10个结果。 #### 3. 递归查看特定目录的大小查看特定目录及其内部子目录的大小,可以指定路径: ```bash du -ah /path/to/directory | sort -h ``` - `-a` 表示显示所有文件和目录的大小- `-h` 提供易读的输出格式。 ### 示例输出 假设有如下文件结构: ``` /mnt/ ├── a01.txt ├── a02.txt ├── a03.txt ├── user01/ ├── user02/ └── user03/ ``` 运行以下命令后: ```bash du -sh /mnt/* | sort -h ``` 可能会得到类似的结果: ``` 0 /mnt/a01.txt 0 /mnt/a02.txt 0 /mnt/a03.txt 6 /mnt/user02 6 /mnt/user03 24 /mnt/user01 ``` 通过这种方式,可以快速识别出占用存储空间较多的文件或目录,从而优化磁盘管理。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值