1 du命令

1.1 du命令说明

du命令主要是用来查看目录或文件所占磁盘空间的大小。
如果工作中遇到磁盘使用率过大,可以通过这个命令找到是哪个文件或者目录占用过大,从而解决问题。所以是一个很实用的命令。

格式:du [OPTION]… [FILE]
常用参数:

  • -0,–null:输出内容不换行
  • -a,–all:显示所有文件或目录的磁盘使用情况,包括隐藏文件,以及子目录下的所有文件和目录
  • -c,–total:显示指定目录下所有文件和目录的磁盘使用情况,还有所有文件和目录的总和,一般和–max-depth一起使用
  • -d,–max-depth=N,显示该目录下最多多少深度的目录,比如–max-depth=2,当前目录为/,此时不仅会显示该目录下的所有文件及目录占用磁盘空间情况,还会显示 // 目录下的文件及目录的磁盘占用情况
  • –h, --human-readable:以人类可读格式打印尺寸,也就是说根据数字大小换算成合适的单位,如:1K 234M 2G
  • –inodes:显示inode号
  • -k:输出内容以 kb 单位显示磁盘使用量
  • -m:输出内容以 mb 单位显示磁盘使用量
  • l:统计硬链接的次数
  • L:取消对所有符号链接的引用
  • -s 或 --summarize:仅显示总计的磁盘使用量,不显示每个文件和目录的详细信息。
  • -S 或 --separate-dirs:显示每个目录的大小,不包含其子目录的大小。
  • -x, --one-file-system:跳过不同文件系统的目录
  • –help:显示帮助信息
  • –version:显示du的版本

## 1.2 实例

-a:显示当前目录下所有文件和目录

# 显示当前目录下所有文件和目录
du -ah

在这里插入图片描述

-s:显示当前目录下所有文件和目录总大小

# 显示当前目录下所有文件和目录总大小
du -hs
75M     .
# 不能和 -a 参数共用

–max-depth:显示当前目录,目录深度为1的,所有目录的总大小

# 注意:此处--max-depth 是双-
# 显示当前目录,目录深度为1的,所有目录的总大小
# 该命令多用于:如果工作中遇到磁盘占用过大时,查找是哪个文件或者目录占用过大
du -h --max-depth=1
8.0K    ./.ssh
20K     ./snap
4.0K    ./.cache
8.0K    ./.vim
12K     ./.local
70M     ./haproxy-2.8.5
75M     .
75M     total

du -Sh --max-depth=1
8.0K    ./.ssh
4.0K    ./snap
4.0K    ./.cache
8.0K    ./.vim
4.0K    ./.local
18M     ./haproxy-2.8.5
4.6M    .

du -ch --max-depth=1
8.0K    ./.ssh
20K     ./snap
4.0K    ./.cache
8.0K    ./.vim
12K     ./.local
70M     ./haproxy-2.8.5
75M     .
75M     total

-k:输出内容以 kb 单位显示磁盘使用量

# -k
du -k --max-depth=1
# 输出文件的大小都是kb为单位
8       ./.ssh
20      ./snap
4       ./.cache
8       ./.vim
12      ./.local
71268   ./haproxy-2.8.5
75972   .

2 sort命令

sort 命令是常用的文本排序工具,它可以根据指定的规则对文本文件的内容进行排序。通常和du命令结合使用来找到占用磁盘最大的文件。

2.1 sort 命令说明

作用:将所有文件的排序序列写入标准输出。如果没有FILE,或者当FILE为-时,读取标准输入。
使用:sort [OPTION]… [FILE]
常用参数:

  • 排序选项:
    • -b:忽略空白格,如果每行前面有空格,从非空格处开始排序
    • -d:在排位时仅根据字母、数字和空格来排位
    • -f:忽略大小写,不区分大小写
    • -M:按照月份缩写进行排序
    • -h:根据人类可读数字进行排序。例如:4k,1.2M,0.9G,如果不使用-h参数,排序结果为:0.9G、1.2M、4K;如果使用-h参数,排序结果为:4K、1.2M、0.9G。这个参数在查询文件大小时常用
    • -n:按照数字大小进行排序
    • r:倒序排。sort默认是顺序排,即从小到大;-r则为从大到小
    • –sort=WORD:按照指定的WORD进行排序,WORD的值为:-g:通用数字;-h:以人类可读数字;-M:月份;-n:数字;-R:随机;-V:版本
    • -V:版本号
  • 其他选项:
    • -c:检查文件是否已排序
    • -m:合并已经排序的文件
    • -o, --output=FILE :将结果写入文件而不是标准输出
    • -u:去重

2.2 实例

准备一个文件

vim test
dfghit903
Bdek568
eMdto 11
2098K
Sep
1.2G
248
 qertj
23.3M
bdild11
Bdek568
Oct
_a

默认排序

# 可以看出来,sort默认排序是顺序排序,不区分大小写
sort test
-----------
1.2G
2098K
23.3M
248
_a
Bdek568
Bdek568
bdild11
dfghit903
eMdto 11
Oct
 qertj
Sep

-M:按照月份缩写进行排序

sort -M test
1.2G
2098K
23.3M
248
_a
Bdek568
Bdek568
bdild11
dfghit903
eMdto 11
 qertj
Sep
Oct

-h:按照人类可读进行排序

sort -h test
_a
Bdek568
Bdek568
bdild11
dfghit903
eMdto 11
Oct
 qertj
Sep
248
2098K
23.3M
1.2G

-u:去重

sort -u test
1.2G
2098K
23.3M
248
_a
Bdek568
bdild11
dfghit903
eMdto 11
Oct
 qertj
Sep

-r:倒叙

sort -r test
Sep
 qertj
Oct
eMdto 11
dfghit903
bdild11
Bdek568
Bdek568
_a
248
23.3M
2098K
1.2G

-n:按数字排序

# 按照数字排序,并将结果输出到文件中
sort -n test -o a1
root@con01:~# cat a1
_a
Bdek568
Bdek568
bdild11
dfghit903
eMdto 11
Oct
 qertj
Sep
1.2G
23.3M
248
2098K

-c:检查文件是否排序

# 如下命令是检查文件是否排序
sort -c a1
sort: a1:10: disorder: 1.2G
# 输出内容表示:第十行内容:1.2G不符合排序
sort -c test
sort: test:2: disorder: Bdek568


# 下面是检查文件是否按照数字排序
sort -c -n test
sort: test:2: disorder: Bdek568
sort -c -n a1
# 无输出内容
# 在上一个实验中可以知道,a1文件为我们按数字排序后输出的内容,所以检查发现内容已经排序,所系无输出

总结

把du命令和sort命令写在一起,也是因为这两个命令在平常工作中经常一起使用,尤其是在查询磁盘空间使用过大时,这两个命令很实用。

#常用命令:
du -Sh --max-depth=1 |sort -hr
# 按照这个命令一级一级目录往下找,很容易找到占用过大的文件
Logo

更多推荐