du -h --max-depth=1|grep G|sort -n
时间: 2025-01-24 08:34:49 浏览: 59
### 使用 `du` 和 `grep` 命令查看当前目录下大于1G的文件夹并按大小排序
为了实现这一目标,可以通过组合多个命令来完成任务。具体来说,先利用 `du` 命令统计各个子目录下的磁盘使用量,再通过管道传递给其他工具处理数据。
#### 统计子目录磁盘用量
首先,使用 `-sh */` 参数让 `du` 显示每个子目录的总大小,并以人类易读的方式呈现(如KB, MB, GB)。这一步骤能够获取到所有子目录的信息[^3]:
```bash
du -sh */
```
#### 过滤出超过1GB的数据
接着,为了让输出更精确,只保留那些体积大于等于1GB的条目。这里可以借助 `awk` 或者 `grep` 来过滤掉不符合条件的内容。考虑到单位可能是多种多样(比如K,M,G),因此采用正则表达式匹配任何带有"G"结尾的字符串作为初步筛选标准之一[^2]:
```bash
du -sh */ | grep 'G'
```
然而上述方法可能遗漏了一些接近但未达到整数吉字节的情况,所以推荐改用 `awk` 更灵活地比较数值:
```bash
du -sb */ | awk '{if ($1 >= 1073741824) print $0}'
```
此处 `$1` 表示由 `du -sb` 输出的第一列即实际字节数,当其值不小于1GiB (1073741824 bytes) 时才打印整个记录。
#### 对结果进行排序
最后一步是对符合条件的结果按照大小降序排列。由于之前已经得到了具体的字节数而不是缩写的容量表示法,可以直接调用 `sort` 并指定逆向(-r)和基于数字(-n)两个选项来进行排序操作:
```bash
du -sb */ | awk '{if ($1 >= 1073741824) print $0}' | sort -nr
```
如果希望最终结果显示成更加直观的形式,则可以在最前面加上 `numfmt --to=iec-i` 将原始字节数转换回带前缀的格式以便阅读:
```bash
du -sb */ | awk '{if ($1 >= 1073741824) print $0}' | sort -nr | numfmt --to=iec-i
```
这样就完成了从定位大尺寸文件夹到最后整理展示的一系列动作。
阅读全文
相关推荐




















