linux系统下以存储从大到小并以K,M,G为单位的方式查看当前目录下的文件信息

本文介绍了一种在Linux环境中优雅地显示文件大小的方法,通过自定义脚本实现了文件大小的人性化显示及按大小排序的功能。

前言

最近几乎大部分工作都在linux上进行的,发现在工作过程中经常要查看当前目录下的文件大小,但是每次都是用ls命令每次都是以字节形式显示的,看起来特别不爽。于是开始了再linux下如何看起来很爽文件显示之旅。

ls命令

这个命令可能是我们在linux环境下最常用的命令了,闲来没事, ls一下。用ls命令查看文件夹下的文件信息一般是这样的

sty@dl-server01:~/styfiles$ ls
demo.sh  fastAI  pythonFile  styNet  teamviewer_amd64.deb

ls -a

我们只能看见文件夹下的显示当前目录下非隐藏的文件与目录信息
我们用ls -a显示当前目录下包括隐藏文件在内的所有文件列表

sty@dl-server01:~/styfiles$ ls -a
.  ..  demo.sh  fastAI  .ipynb_checkpoints  pythonFile  styNet  teamviewer_amd64.deb

ls -l

我们用ls -l 输出长格式列表,信息包含了文件的大小和类型

sty@dl-server01:~/styfiles$ ls -l
total 10148
-rw-rw-r--  1 sty sty      394 45 20:42 demo.sh
drwxrwxr-x  5 sty sty     4096 114 18:20 fastAI
drwxrwxr-x 12 sty sty     4096 45 21:48 pythonFile
drwxrwxr-x  3 sty sty     4096 45 20:26 styNet
-rw-rw-r--  1 sty sty 10374958 1219 15:25 teamviewer_amd64.deb

ll

我平时用的更多的可能是ll,这个在ls -l的基础上还可以显示隐藏文件

sty@dl-server01:~/styfiles$ ll
total 10160
drwxrwxr-x  6 sty sty     4096 45 22:01 ./
drwxr-xr-x  6 sty sty     4096 45 21:57 ../
-rw-rw-r--  1 sty sty      394 45 20:42 demo.sh
drwxrwxr-x  5 sty sty     4096 114 18:20 fastAI/
drwxr-xr-x  2 sty sty     4096 114 16:48 .ipynb_checkpoints/
drwxrwxr-x 12 sty sty     4096 45 21:48 pythonFile/
drwxrwxr-x  3 sty sty     4096 45 20:26 styNet/
-rw-rw-r--  1 sty sty 10374958 1219 15:25 teamviewer_amd64.deb

du命令

这个命令主要是显示目录或者文件所占空间

[root@localhost test]# du
608 ./test6
308 ./test4
4 ./scf/lib
4 ./scf/service/deploy/product
4 ./scf/service/deploy/info
12 ./scf/service/deploy
16 ./scf/service
4 ./scf/doc
4 ./scf/bin
32 ./scf
8 ./test3
1288 .

du -s

使用du -s只显示总和的大小

sty@dl-server01:~/styfiles$ du -s
2747588 .

du -s *

使用du -s *将显示所有文件的大小

sty@dl-server01:~/styfiles$ du -s *
4       demo.sh
2722128 fastAI
15292   pythonFile
24      styNet
10132   teamviewer_amd64.deb

du -s * | sort -nr

使用du -s * | sort -nr我们可以将文件从大到小显示出来

sty@dl-server01:~/styfiles$ du -s * | sort -nr
2722128 fastAI
15292   pythonFile
10132   teamviewer_amd64.deb
24      styNet
4       demo.sh

但是这是以kb形式显示文件大小的,比如我想知道fastAI这个文件夹多大,我肯定希望以MB或者GB为单位。使用du -sh *是可以这么人性化的显示的

sty@dl-server01:~/styfiles$ du -sh *
4.0K    demo.sh
2.6G    fastAI
15M     pythonFile
24K     styNet
9.9M    teamviewer_amd64.deb

但是没有排序,我们再用组合命令du -sh * | sort -nr进行排序之后发现排序是以数字大小排序的,我们fastAI文件夹都2.6G大小了却排到了最后面,这显示不是我们想要的

sty@dl-server01:~/styfiles$ du -sh * | sort -nr
24K     styNet
15M     pythonFile
9.9M    teamviewer_amd64.deb
4.0K    demo.sh
2.6G    fastAI

我的DIY_Bash

但是我想要的结果是这样的:

sty@dl-server01:~/styfiles$ sort_file.sh
2.60G            fastAI
14.93M           pythonFile
9.89M            teamviewer_amd64.deb
24k              styNet
4k               demo.sh

其实这个我们可以通过duawk命令组合完成

#!/bin/sh

# description: Sort the files in your directory by size, and Display their storage size directly
# user: sty
# blog: https://blog.csdn.net/sty945
# github: https://github.com/sty945


du -s * | sort -nr | awk -F'\t' '{if(1024 * 1024 * 1024 * 1024 > $1 && $1 >= 1024 * 1024 * 1024) {printf "%.2fT\t\t %-2s\n", $1/(1024 * 1024 * 1024), $2} else if(1024 * 1024 * 1024 > $1 && $1 >= 1024 * 1024) {printf "%.2fG\t\t %-2s\n", $1/(1024 * 1024), $2} else if (1024 * 1024 > $1 && $1 >= 1024) {printf "%.2fM\t\t %-2s\n", $1/1024, $2} else {printf "%sk\t\t %-2s\n", $1, $2}}' 

我已经将该脚本写入shell脚本,并上传到Github之上地址如下,并且里面也将详细写出了如何在linux任何地方都可以随时使用这个脚本,就像你使用linux命令一样方便:
DIY_Bash
欢迎大家fork这个文件夹,让里面的内容丰富起来,如果觉得不错,请点个star,鼓励我一下

在linux任意位置都可以使用这个目录下的脚本

我们从Github中下载文件夹到自己的电脑上,解压后,进入文件夹,然后敲命令pwd显示当前文件的路径是多少,比如我的电脑的路径是:

sty@dl-server01:~/DIY_Bash$ pwd
/media/home/sty/DIY_Bash

然后我们打开~/.bash_profile

sty@dl-server01:~$ vim ~/.bash_profile

~/.bash_profile中按照下面的样式加入刚才显示的目录

export PATH=/media/home/sty/DIY_Bash:$PATH

然后执行下面的命令

source ~/.bash_profile

重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录

然后我们就可以在任意的文件夹下使用我们的脚本了
比如我们只需要在输入sorf_file.sh就可以以从存储大到小的顺序而且人性化的显示当前文件夹的非隐藏目录的大小了。

注意

如果你出现出现类似下面的错误:Permission denied

sty@dl-server01:~$ sort_file.sh
-bash: /media/home/sty/DIY_Bash/sort_file.sh: Permission denied

这是由于这个脚本没有权限的原因,你只需要进入DIY_Bash文件夹执行下面的命令即可,
这将为DIY_Bash下的脚本都赋予执行权限:

 chmod +x *

转载请注明出处:
CSDN:楼上小宇__home:http://blog.csdn.net/sty945
简书:楼上小宇:http://www.jianshu.com/u/1621b29625df

<think>嗯,用户想了解在Linux系统中如何以M为单位显示目录下文件大小的具体方法。根据提供的引用内容,有以下几种方法: 1. 使用`ls -lh`命令是最简单直接的方式:引用[1]明确指出,配合`-l`列表形式和`-h`选项就能以K/M/G单位显示文件大小。比如查看`/var/log`目录: ```bash ls -lh /var/log ``` 2. 使用`du -h --max-depth=1`查看目录小:引用[4]给出了具体示例,命令会递归显示每个子目录的小并以人类可读格式输出。例如查看当前目录: ```bash du -h --max-depth=1 ``` 用户特别要求M单位时,可改用`-m`选项: ```bash du -m --max-depth=1 ``` 3. 引用[3]的示例证明`ls -lh`和`du -h`输出的实际效果:14M的nohup.out、8.7G的bam文件等,说明这两种方法都符合需求。 4. 用户可能需要补充知识点:引用[2]提到Linux新手常遇到的困惑,建议说明`-h`选项的通用性(多数命令支持)。另需提醒`du`和`ls`的区别——前者统计磁盘占用,后者显示文件实际小。 5. 衍生问题可围绕不同场景设计:比如如何仅显示于100M的文件(过滤需求),如何统计目录总小(汇总需求),以及解决符号链接等特殊情况。 最终回复将按用户要求用中文组织,确保命令语法准确性,并在末尾添加引用标记。 </think>在 Linux 系统中,有以下几种常用方法可以**以 M 为单位显示目录下文件大小**: ### 📁 方法一:使用 `ls` 命令(显示文件大小) ```bash ls -lh ``` * **作用**:以列表形式显示当前目录内容,文件大小自动转换为 K/M/G 等易读单位 * **示例输出**: ``` -rw-r--r-- 1 user group 14M Aug 1 10:23 nohup.out -rw-r--r-- 1 user group 27M Aug 2 15:30 show.log ``` * **说明**:`-l` 启用列表模式,`-h` 启用人类可读格式(自动转换单位为 K/M/G)[^1][^3] ### 📊 方法二:使用 `du` 命令(显示磁盘占用) ```bash # 查看当前目录所有文件/子目录小(M单位) du -m --max-depth=1 # 查看指定目录小(例如 /var/log) du -m --max-depth=1 /var/log ``` * **参数说明**: * `-m`:强制以 MB 为单位显示 * `--max-depth=1`:仅显示当前目录层级(不递归子目录) * **示例输出**: ``` 408 ./logs 24 ./cache 1024 ./data ``` * **进阶用法**: ```bash # 按小排序(最文件在前) du -m --max-depth=1 | sort -nr ``` [^4] ### 🔍 方法三:组合命令(显示特定文件大小) ```bash # 查找于 100M 的文件 find . -type f -size +100M -exec ls -lh {} \; ``` * **输出示例**: ``` -rw-r--r-- 1 user group 8.7G Jul 30 09:00 ./RMNISTHS_30xdownsample.bam ``` --- ### 📌 关键区别说明 | 命令 | 显示内容 | 适用场景 | |------|----------------------|----------------------------| | `ls` | 文件实际小 | 查看文件详细属性 | | `du` | 文件磁盘占用空间 | 分析存储消耗 | | `find`| 过滤特定小的文件 | 定位文件 | > ⚠️ 注意:`du` 显示的磁盘占用可能于 `ls` 的文件大小(受磁盘块分配影响),如需精确分析存储空间,建议优先使用 `du -m`[^2][^4]。 --- ### 📚 相关问题 1. 如何仅显示于 100MB 的文件? **答**:`find . -type f -size +100M -exec ls -lh {} \;` 2. 如何统计目录的总小(以 MB 为单位)? **答**:`du -sm 目录路径`(示例:`du -sm /home` 显示 /home 总小) 3. 为什么 `du` 和 `ls` 显示小有时不一致? **答**:`du` 统计磁盘块占用(通常为 4K 的整数倍),`ls` 显示文件实际字节数。稀疏文件或磁盘块分配会导致差异[^2]。 4. 如何显示隐藏文件的小? **答**:`ls -lha` (`-a` 参数显示隐藏文件) --- > **操作建议**:日常查看文件大小推荐 `ls -lh`,分析存储占用推荐 `du -m --max-depth=1`。对于运维工作,建议将常用命令存入笔记,避免临时查文档的低效情况[^2]。 [^1]: Linux下列出目录内容的命令 [^2]: 开发常用Linux命令指南 [^3]: 以K/M/G为单位显示文件大小 [^4]: `du`命令查询目录
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值