![我不明白“ls”命令是如何工作的](https://linux22.com/image/196708/%E6%88%91%E4%B8%8D%E6%98%8E%E7%99%BD%E2%80%9Cls%E2%80%9D%E5%91%BD%E4%BB%A4%E6%98%AF%E5%A6%82%E4%BD%95%E5%B7%A5%E4%BD%9C%E7%9A%84.png)
我想检查文件夹的大小pg_backup
,所以我使用了以下命令:
[postgres@server02 ~]$ pwd
/var/lib/pgsql
[postgres@server02 ~]$ ls -lh
total 4.0K
drwxr-x---. 7 postgres postgres 86 Oct 6 22:00 pg_backup
如上面的输出所示,大小为 86 字节。
但是,pg_backup
目录本身还包含其他几个目录:
[postgres@server02 ~]$ ls -lh pg_backup
total 0
drwxr-xr-x. 3 postgres postgres 121 Oct 2 23:00 20211002
drwxr-xr-x. 2 postgres postgres 109 Oct 3 22:00 20211003
drwxr-xr-x. 2 postgres postgres 109 Oct 4 22:00 20211004
drwxr-xr-x. 2 postgres postgres 109 Oct 5 22:00 20211005
drwxr-xr-x. 2 postgres postgres 109 Oct 6 22:00 20211006
[postgres@server02 ~]$
然后这些子目录之一包含一些大文件:
[postgres@server02 ~]$ ls -lh pg_backup/20211006
total 23G
-rw-r--r--. 1 postgres postgres 23G Oct 6 23:21 file.dump
-rw-r--r--. 1 postgres postgres 418K Oct 6 22:00 backup_dba.dump
-rw-r--r--. 1 postgres postgres 1.4K Oct 6 22:00 backup_postgres.dump
-rw-r--r--. 1 postgres postgres 830 Oct 6 22:00 backup_dwh.dump
我很困惑为什么该ls -lh
命令显示的大小pg_backup
仅为 86 字节,如果实际上该目录包含许多较大的子目录,而这些子目录又包含大小可能达到 23GB 的文件?为什么pg_backup
初始命令中没有反映 的所有子目录中的文件总数ls -lh
?
答案1
ls
显示文件消耗的大小。如果我们简化一些事情,类 Unix 系统中的很多东西看起来都像文件。有些是文件文件,有些是套接字文件,有些是符号链接文件,有些是目录文件等。输出中显示的大小ls
是该对象消耗的大小。但它没有考虑目标所指对象的大小。
您正在寻找
du -h -d 0 <directory>
命令。尺寸向ls
您展示 - 嗯,事实并非如此。是的,它会变得更大,因为目录将包含更多的子目录,但这两种大小衡量的是不同的东西。