前言
本文给大家分享如何在linux系统查看目录的大小的相关知识点及查看技巧。
相信不少朋友是被文章标题逼着进来看看的,心想着查看linux下的目录大小命令不就是ls -l吗?再者人类能够看懂的就是ls -lh了,难道不是这两个命令吗?
答疑解惑
1、首先咱们就根据大家所想的,通过ls -lh / 去查看根目录下的各文件目录大小,我本机查看到如下图所示:
熟悉ls命令的朋友都知道,以上在根目录下列出的各目录大小最大的竟然只有8KB,多数都是4KB,这显然不是我们所看文件目录的实际大小,怎么回事呢?
2、让我们再次通过ls -lh /java_ruanjian/命令查看/java_ruanjian/目录的大小,如下图所示:
此时查看到该目录下的文件大小是139MB。
为什么是这样?其实这里简单概括就是:ls -lh能得到普通文件的大小,但对于目录得到的4K,那是目录文件的大小(即目录本身要占4K),但是不是目录里所有文件的大小。
linux系统中目录中保存的仅仅是文件的文件名和文件的inode号,相当于保存的是它里面文件的指针,所以系统会根据目录中文件名和inode的数量分配若干个block给目录,而block的大小一般就是4K,如果一个目录中文件名太多可能会分配2个或多个block给目录。
那我们该如何去查看linux文件目录的实际大小呢?请继续往下看看。
通过du命令查看文件目录大小
其实linux系统中可以通过du命令进行查看文件目录的大小。
du:英文为disk usage (磁盘使用量,占用的磁盘空间)。
一个文件占用的磁盘空间和一个文件的大小是两码事情。占用空间取决于文件系统的块(block)的大小,linux一般默认是4KB,因此,一个大小为1个字节的文件,最小也要占用4K,如果你创建文件系统的时候制定块大小是16K,那么即便一个文件只有1个字节,占用空间也是16K。
du命令的主要语法如下所示:
- du [-abcDhHklmsSx][-L <符号连接>][-X <文件>][--block-size][--exclude=<目录或文件>][--max-depth=<目录层数>][--help][--version][目录或文件]
du命令参数说明如下:
-a或-all :显示目录中个别文件的大小。
-b或-bytes :显示目录或文件大小时,以byte为单位。
-c或--total :除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。
-D或--dereference-args :显示指定符号连接的源文件大小。
-h或--human-readable :以K,M,G为单位,提高信息的可读性。
-H或--si :与-h参数相同,但是K,M,G是以1000为换算单位。
-k或--kilobytes :以1024 bytes为单位。
-l或--count-links :重复计算硬件连接的文件。
-L<符号连接>或--dereference<符号连接> :显示选项中所指定符号连接的源文件大小。
-m或--megabytes :以1MB为单位。
-s或--summarize :仅显示总计。
-S或--separate-dirs :显示个别目录的大小时,并不含其子目录的大小。
-x或--one-file-xystem :以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。
-X<文件>或--exclude-from=<文件> :在<文件>指定目录或文件。
--exclude=<目录或文件> :略过指定的目录或文件。
--max-depth=<目录层数> :超过指定层数的目录后,予以忽略。
--help :显示帮助。
--version :显示版本信息。
看到这一大推参数,大家是不是慌了!别担心,今天只挑重点的讲,也就是常用的几个参数,足以应付查看文件目录大小的参数。
du命令实战讲解
以下通过/haodao/linux/test01 文件目录进行常见参数实战讲解。
1、查看/haodao/linux/test01目录的大小,命令如下:
- [root@haodaolinux1 ~]# du -h /haodao/linux/test01
- 50M /haodao/linux/test01
2、查看/haodao目录下每一个目录(包含其子目录)的大小,命令如下:
- [root@haodaolinux1 ~]# du -h /haodao
- 50M /haodao/linux/test01
- 100M /haodao/linux
- 238M /haodao
3、查看/haodao目录的大小,仅仅宣示目录总和,命令如下:
- [root@haodaolinux1 ~]# du -sh /haodao
- 238M /haodao
4、通过--max-depth=<目录层数>参数指定目录层级来查找某个目录文件大小,命令如下:
- [root@haodaolinux1 ~]# du -h --max-depth=1 /haodao
- 100M /haodao/linux
- 238M /haodao
- [root@haodaolinux1 ~]# du -h --max-depth=2 /haodao
- 50M /haodao/linux/test01
- 100M /haodao/linux
- 238M /haodao
以上命令分别指定/haodao目录的目录层级为1和目录层级为2,当目录层级为1时,只列出/haodao目录下的文件目录大小。当目录层级为2时,则列出/haodao/linux目录下的文件目录大小。
结语
本文通过大家平日容易忽略的一个知识点出发,通过具体实例带大家查看linux下文件目录的大小。希望能够给大家带来工作上的一些便捷之处。