Hot For Coding
Linux du命令使用

使用Win平台习惯后在Linux下查看目录列表时希望能看到实际文件的大小,我们可以使用du命令查看

命令格式

du [options] [path]

常用参数有

  • -a or -all 为每个指定文件显示磁盘使用情况,或者为目录中每个文件显示各自磁盘使用情况。
  • -b or -bytes 显示目录或文件大小时,以byte为单位。
  • -c or -total 除了显示目录或文件的大小外,同时也显示所有目录或文件的总和。
  • -D or -dereference-args 显示指定符号连接的源文件大小。
  • -h or -human-readable 以K,M,G为单位,提高信息的可读性。
  • -H or -si-h参数相同,但是K,M,G是以1000为换算单位,而不是以1024为换算单位。
  • -k or -kilobytes 以1024 bytes为单位。
  • -l or -count-links 重复计算硬件连接的文件。
  • -L<符号连接> or -dereference<符号连接> 显示选项中所指定符号连接的源文件大小。
  • -m or -megabytes 以1MB为单位。
  • -s or -summarize 仅显示总计,即当前目录的大小。
  • -S or -separate-dirs 显示每个目录的大小时,并不含其子目录的大小。
  • -x or -one-file-xystem 以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。
  • -X<文件> or -exclude-from=<文件> 在<文件>指定目录或文件。
  • --exclude=<目录或文件> 略过指定的目录或文件。
  • --max-depth=<目录层数> 超过指定层数的目录后,予以忽略。
  • --help 显示帮助。
  • --version 显示版本信息。

简单使用

[root@lee ~]# du
16      ./.gnupg
4       ./公共的
68      ./Imaging-1.1.7/Scripts
372     ./Imaging-1.1.7/Docs
156     ./Imaging-1.1.7/Images
88      ./Imaging-1.1.7/Sane
2040    ./Imaging-1.1.7/PIL
28      ./Imaging-1.1.7/Tk
1464    ./Imaging-1.1.7/build/temp.linux-x86_64-2.7/libImaging
2156    ./Imaging-1.1.7/build/temp.linux-x86_64-2.7
1884    ./Imaging-1.1.7/build/lib.linux-x86_64-2.7
36      ./Imaging-1.1.7/build/scripts-2.7
4080    ./Imaging-1.1.7/build
596     ./Imaging-1.1.7/libImaging
7864    ./Imaging-1.1.7
264     ./jpeg-9/.deps
5512    ./jpeg-9/.libs
13272   ./jpeg-9
...

-s参数 ,不把子目录列出来

[root@lee ~]# du -s ./*
4       ./anaconda-ks.cfg
4       ./a.py
31148   ./freetype-2.4.12
2072    ./freetype-2.4.12.tar.gz
7864    ./Imaging-1.1.7
488     ./Imaging-1.1.7.tar.gz
56      ./install.log
12      ./install.log.syslog
13272   ./jpeg-9
968     ./jpegsrc.v9.tar.gz
4       ./main.py
235488  ./mongodb-linux-x86_64-2.4.1
92044   ./mongodb-linux-x86_64-2.4.1.tgz
6548    ./PIL-1.1.7
496     ./PIL-1.1.7.tar.gz
4       ./pyc.sh
4       ./sup.sh
12      ./test
4       ./test.py
12      ./test.tgz
4964    ./www.nihaoagent.com_2012_12_18.tar.bz2
4224    ./zlib-1.2.8
560     ./zlib-1.2.8.tar.gz
4       ./公共的
4       ./模板
4       ./视频
4       ./图片
4       ./文档
4       ./下载
4       ./音乐
4       ./桌面

-h参数,以K,M,G为单位,提高信息的可读性

[root@lee ~]# du -sh ./*
4.0K    ./anaconda-ks.cfg
4.0K    ./a.py
31M     ./freetype-2.4.12
2.1M    ./freetype-2.4.12.tar.gz
7.7M    ./Imaging-1.1.7
488K    ./Imaging-1.1.7.tar.gz
56K     ./install.log
12K     ./install.log.syslog
13M     ./jpeg-9
968K    ./jpegsrc.v9.tar.gz
4.0K    ./main.py
230M    ./mongodb-linux-x86_64-2.4.1
90M     ./mongodb-linux-x86_64-2.4.1.tgz
6.4M    ./PIL-1.1.7
496K    ./PIL-1.1.7.tar.gz
4.0K    ./pyc.sh
4.0K    ./sup.sh
12K     ./test
4.0K    ./test.py
12K     ./test.tgz
4.9M    ./www.nihaoagent.com_2012_12_18.tar.bz2
4.2M    ./zlib-1.2.8
560K    ./zlib-1.2.8.tar.gz
4.0K    ./公共的
4.0K    ./模板
4.0K    ./视频
4.0K    ./图片
4.0K    ./文档
4.0K    ./下载
4.0K    ./音乐
4.0K    ./桌面

-a参数,查看磁盘使用情况

[root@lee ~]# du -a ./*.gz
2072    ./freetype-2.4.12.tar.gz
488     ./Imaging-1.1.7.tar.gz
968     ./jpegsrc.v9.tar.gz
496     ./PIL-1.1.7.tar.gz
560     ./zlib-1.2.8.tar.gz

-m参数,以M为单位

[root@lee ~]# du -sm ./*
1       ./anaconda-ks.cfg
1       ./a.py
31      ./freetype-2.4.12
3       ./freetype-2.4.12.tar.gz
8       ./Imaging-1.1.7
1       ./Imaging-1.1.7.tar.gz
1       ./install.log
1       ./install.log.syslog
13      ./jpeg-9
1       ./jpegsrc.v9.tar.gz
1       ./main.py
230     ./mongodb-linux-x86_64-2.4.1
90      ./mongodb-linux-x86_64-2.4.1.tgz
7       ./PIL-1.1.7
1       ./PIL-1.1.7.tar.gz
1       ./pyc.sh
1       ./sup.sh
1       ./test
1       ./test.py
1       ./test.tgz
5       ./www.nihaoagent.com_2012_12_18.tar.bz2
5       ./zlib-1.2.8
1       ./zlib-1.2.8.tar.gz
1       ./公共的
1       ./模板
1       ./视频
1       ./图片
1       ./文档
1       ./下载
1       ./音乐
1       ./桌面

-exclude参数,排除指定文件

[root@lee ~]# du -s --exclude='zlib-1.2.8.tar.gz' ./* 
4       ./anaconda-ks.cfg
4       ./a.py
31148   ./freetype-2.4.12
2072    ./freetype-2.4.12.tar.gz
7864    ./Imaging-1.1.7
488     ./Imaging-1.1.7.tar.gz
56      ./install.log
12      ./install.log.syslog
13272   ./jpeg-9
968     ./jpegsrc.v9.tar.gz
4       ./main.py
235488  ./mongodb-linux-x86_64-2.4.1
92044   ./mongodb-linux-x86_64-2.4.1.tgz
6548    ./PIL-1.1.7
496     ./PIL-1.1.7.tar.gz
4       ./pyc.sh
4       ./sup.sh
12      ./test
4       ./test.py
12      ./test.tgz
4964    ./www.nihaoagent.com_2012_12_18.tar.bz2
4224    ./zlib-1.2.8
4       ./公共的
4       ./模板
4       ./视频
4       ./图片
4       ./文档
4       ./下载
4       ./音乐
4       ./桌面

-c参数,显示文件或者目录总和

[root@lee ~]# du -sch *
4.0K    anaconda-ks.cfg
4.0K    a.py
31M     freetype-2.4.12
2.1M    freetype-2.4.12.tar.gz
7.7M    Imaging-1.1.7
488K    Imaging-1.1.7.tar.gz
56K     install.log
12K     install.log.syslog
13M     jpeg-9
968K    jpegsrc.v9.tar.gz
4.0K    main.py
230M    mongodb-linux-x86_64-2.4.1
90M     mongodb-linux-x86_64-2.4.1.tgz
6.4M    PIL-1.1.7
496K    PIL-1.1.7.tar.gz
4.0K    pyc.sh
4.0K    sup.sh
12K     test
4.0K    test.py
12K     test.tgz
4.9M    www.nihaoagent.com_2012_12_18.tar.bz2
4.2M    zlib-1.2.8
560K    zlib-1.2.8.tar.gz
4.0K    公共的
4.0K    模板
4.0K    视频
4.0K    图片
4.0K    文档
4.0K    下载
4.0K    音乐
4.0K    桌面
391M    总用量

获取目录下所有文件的大小并倒序排列

[root@lee ~]# du -sh * | sort -hr
230M    mongodb-linux-x86_64-2.4.1
90M     mongodb-linux-x86_64-2.4.1.tgz
31M     freetype-2.4.12
13M     jpeg-9
7.7M    Imaging-1.1.7
6.4M    PIL-1.1.7
4.9M    www.nihaoagent.com_2012_12_18.tar.bz2
4.2M    zlib-1.2.8
2.1M    freetype-2.4.12.tar.gz
968K    jpegsrc.v9.tar.gz
560K    zlib-1.2.8.tar.gz
496K    PIL-1.1.7.tar.gz
488K    Imaging-1.1.7.tar.gz
56K     install.log
12K     test.tgz
12K     test
12K     install.log.syslog
4.0K    桌面
4.0K    音乐
4.0K    下载
4.0K    文档
4.0K    图片
4.0K    视频
4.0K    模板
4.0K    公共的
4.0K    test.py
4.0K    sup.sh
4.0K    pyc.sh
4.0K    main.py
4.0K    a.py
4.0K    anaconda-ks.cfg

网上有不少人再做这个需求时,是按n排序的,结果:

[root@lee ~]# du -sh * | sort -nr
968K    jpegsrc.v9.tar.gz
560K    zlib-1.2.8.tar.gz
496K    PIL-1.1.7.tar.gz
488K    Imaging-1.1.7.tar.gz
230M    mongodb-linux-x86_64-2.4.1
90M     mongodb-linux-x86_64-2.4.1.tgz
56K     install.log
31M     freetype-2.4.12
13M     jpeg-9
12K     test.tgz
12K     test
12K     install.log.syslog
7.7M    Imaging-1.1.7
6.4M    PIL-1.1.7
4.9M    www.nihaoagent.com_2012_12_18.tar.bz2
4.2M    zlib-1.2.8
4.0K    桌面
4.0K    音乐
4.0K    下载
4.0K    文档
4.0K    图片
4.0K    视频
4.0K    模板
4.0K    公共的
4.0K    test.py
4.0K    sup.sh
4.0K    pyc.sh
4.0K    main.py
4.0K    a.py
4.0K    anaconda-ks.cfg
2.1M    freetype-2.4.12.tar.gz

插曲: sort的参数h与n是有区别的,n直接就是数字,而h还能根据字母排序,因为使用du -sh产生的列不仅有数字还有单位M与K,所以不能依靠数字排序,还应该依靠单位来排序

如果想获得更详细的帮助,直接-help就能看到帮助文档,CentOS的中文文档翻译的还不错:

[root@lee ~]# du --help
用法:du [选项]... [文件]...
 或:du [选项]... --files0-from=F
计算每个文件的磁盘用量,目录则取总用量。
 
长选项必须使用的参数对于短选项时也是必需使用的。
  -a, --all             输出所有文件的磁盘用量,不仅仅是目录
      --apparent-size   显示表面用量,而并非是磁盘用量;虽然表面用量通常会
                        小一些,但有时它会因为稀疏文件间的"洞"、内部碎
                        片、非直接引用的块等原因而变大。
  -B, --block-size=大小 使用指定字节数的块
  -b, --bytes           等于--apparent-size --block-size=1
  -c, --total           显示总计信息
  -D, --dereference-args        解除命令行中列出的符号连接
      --files0-from=F   计算文件F 中以NUL 结尾的文件名对应占用的磁盘空间
                        如果F 的值是"-",则从标准输入读入文件名
  -H                    等于--dereference-args (-D)
  -h, --human-readable  以可读性较好的方式显示尺寸(例如:1K 234M 2G)
      --si              类似-h,但在计算时使用1000 为基底而非1024
  -k                    等于--block-size=1K
  -l, --count-links     如果是硬连接,就多次计算其尺寸
  -m                    等于--block-size=1M
  -L, --dereference     找出任何符号链接指示的真正目的地
  -P, --no-dereference  不跟随任何符号链接(默认)
  -0, --null            将每个空行视作0 字节而非换行符
  -S, --separate-dirs   不包括子目录的占用量
  -s, --summarize       只分别计算命令列中每个参数所占的总用量
  -x, --one-file-system         跳过处于不同文件系统之上的目录
  -X, --exclude-from=文件       排除与指定文件中描述的模式相符的文件
      --exclude=PATTERN         排除与PATTERN 中描述的模式相符的文件
      --max-depth=N     显示目录总计(与--all 一起使用计算文件)
                        当N 为指定数值时计算深度为N;
                        --max-depth=0 等于--summarize
      --time            显示目录或该目录子目录下所有文件的最后修改时间
      --time=WORD       显示WORD 时间,而非修改时间:
                        atime,access,use,ctime 或status
      --time-style=样式 按照指定样式显示时间(样式解释规则同"date"命令):
                        full-iso,long-iso,iso,+FORMAT
      --help            显示此帮助信息并退出
      --version         显示版本信息并退出
 
所显示的数值是来自 --block-size、DU_BLOCK_SIZE、BLOCK_SIZE 
及 BLOCKSIZE 环境变量中第一个可用的 SIZE 单位。
否则,默认单位是 1024 字节(或是 512,若设定 POSIXLY_CORRECT 的话)。
 
SIZE 可以是一个可选的整数,后面跟着以下单位中的一个:
KB 1000,K 1024,MB 1000*1000,M 1024*1024,还有 G、T、P、E、Z、Y。
 
请向bug-coreutils@gnu.org 报告du 的错误
GNU coreutils 项目主页:<http://www.gnu.org/software/coreutils/>
GNU 软件一般性帮助:<http://www.gnu.org/gethelp/>
请向<http://translationproject.org/team/zh_CN.html> 报告du 的翻译错误
要获取完整文档,请运行:info coreutils 'du invocation'

TITLE: Linux du命令使用

LINK: https://www.qttc.net/343_linux_du.html

NOTE: 转载内容请注明出处