📜  du 按大小排序 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 14:40:54.063000             🧑  作者: Mango

使用du命令按大小排序的Shell脚本
简介

du命令用于查看文件或目录所占用的磁盘空间大小。本文介绍一种使用Shell脚本对du命令的输出结果按大小进行排序的方法。

脚本细节

以下是一个示例脚本,用于按大小对当前目录下的文件和目录进行排序,并将结果以Markdown格式输出。

#!/bin/bash

# 使用du命令获取当前目录下的所有文件和目录的大小,并按照大小排序
du_output=$(du -h -d 1 --max-depth=1 | sort -hr)

# 遍历du命令输出的结果,生成Markdown格式的表格
markdown_table="| 文件/目录 | 大小 |\n| --- | --- |\n"
while read -r line; do
    file_size=$(echo "$line" | awk '{print $1}')
    file_name=$(echo "$line" | awk '{print $2}')
    markdown_table+="| $file_name | $file_size |\n"
done <<< "$du_output"

# 输出Markdown格式的结果
echo -e "$markdown_table"
代码说明
  1. 脚本首先使用du命令获取当前目录下的所有文件和目录的大小,并通过管道将结果传递给sort命令进行排序。选项-h指定以人类可读的格式显示大小,-d 1 --max-depth=1限制仅显示当前目录下的文件和目录,-r选项表示按照逆序(从大到小)排序。
  2. 使用while循环遍历du命令输出的结果,并使用awk命令提取文件大小和文件名。
  3. 通过在循环中拼接字符串的方式生成Markdown格式的表格,表格的每行对应一个文件或目录的大小信息。
  4. 最后,将生成的Markdown表格输出至标准输出。
运行示例

运行脚本后,将输出一个Markdown格式的表格,其中文件/目录按大小从大到小排列,每行显示文件/目录名称和对应的大小。

示例输出:

| 文件/目录 | 大小 |
| --- | --- |
| directory1/ | 4.0K |
| file1.txt | 2.8K |
| file2.txt | 1.8K |

你可以将脚本改写成可执行文件并运行,或直接将脚本的内容粘贴到终端中执行。运行时请确保脚本具有执行权限,并在脚本所在的目录下执行。