📌  相关文章
📜  linux 按大小 mb 列出文件 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:02:44.455000             🧑  作者: Mango

Linux按大小MB列出文件 - Shell-Bash

在Linux系统中,经常会需要列出文件或文件夹按照大小进行排序。本文介绍如何使用Shell-Bash编写脚本来实现这一目的。

1. 手动列出文件按大小排序

在终端中,我们可以使用ls命令来列出文件或文件夹。如果我们需要按照文件大小进行排序,则需要使用-S参数。如果我们还需要将文件大小用MB单位来表示,则需要使用-h参数。

因此,我们可以使用下面的命令来手动列出文件按大小排序,并用MB单位表示文件大小:

ls -Shl | awk '{printf "%-8s %-8s %-8s %-8s %.2fMB %s\n", $1,$2,$3,$4,$5/1024/1024,$6}'

此命令的含义如下:

  • ls -Shl:列出所有文件,并按照大小排序(从大到小)。使用-h参数将文件大小用MB单位表示。
  • awk命令:进一步格式化输出。将文件大小(以字节为单位)转换为以MB为单位的大小,并输出文件的其他属性(如文件权限、所有者、组、创建时间等)。
2. 以脚本形式编写

上面的命令虽然可以实现按照文件大小排序,但是如果需要多次使用,则需要手动输入命令,不够方便。因此,我们可以将上面的命令以脚本的形式编写。下面是一个示例脚本list_files_by_size.sh的代码:

#!/bin/bash

#列出当前目录的文件按大小排序
ls -Shl | awk '{printf "%-8s %-8s %-8s %-8s %.2fMB %s\n", $1,$2,$3,$4,$5/1024/1024,$6}'

使用该脚本,只需要在终端中执行以下命令即可:

./list_files_by_size.sh

该命令将会列出当前目录下所有文件按大小排序,并用MB单位表示文件大小。

3. 扩展

如果我们想要列出指定目录下的文件按大小排序,则只需要修改脚本中的ls命令即可。例如,我们想要列出/home/user/documents目录下的文件按大小排序:

ls -Shl /home/user/documents | awk '{printf "%-8s %-8s %-8s %-8s %.2fMB %s\n", $1,$2,$3,$4,$5/1024/1024,$6}'
4. 总结

本文介绍了如何在Linux系统中使用Shell-Bash编写脚本来列出文件按大小排序,并用MB单位表示文件大小。脚本可以方便地重复使用,并且可以根据需要定制。