linux下 为什么ls -l命令 和ls -sh 、du 显示文件的大小不一样?

2025-05-14 15:09:57
推荐回答(4个)
回答1:

du不是显示文件大小,而是显示文件所占用的block大小,默认linux系统分区的block size是4k,也就是说即使文件只有1个字节,也会占用4k,ls -l则是文件的实际大小。操作方法如下:

1、打开Linux系统终端,然后进入某个文件夹,并且输入ls命令,即可列出该文件夹下的所有文件名信息了。

2、当然也可以用*加字母来匹配一些后缀名等,这样即可列出指定后缀名的文件了。

3、也可以列出以某些字母或者是字符串开头的文件的。

4、匹配一些无规则的,可以把要匹配的字符放到中括号里面即可。

5、还可以把所有的文件名导入进一个TXT文件里,ls>文件名.txt即可把该目录下的所有文件名保存到这个文本文件里了。

6、最后打开这个TXT文件,即可看到对应目录下的所有文件的文件名了。

回答2:

du 不是显示文件大小,而是显示文件所占用的 block 大小,默认linux系统分区的 block size 是4k,也就是说即使文件只有1个字节,也会占用4k.
s -l则是文件的实际大小

先看一下系统分区时的块大小,

/sbin/tune2fs -l /dev/***
如果是4K就对了,如果你的是1K的话文件指向的node也要占块大小
LINUX下 ls –l命令的作用是
显示长格式,就是显示一个比较完整的信息,包括权限,拥有者,拥有组,文件名,大小等在内。你可以设置别名 alias ll='ls -l',以后就可以直接用ll来替代ls -l这个命令了。

回答3:

那我在详细解释一下:du 不是显示文件大小,而是显示文件所占用的 block 大小,默认linux系统分区的 block size 是4k,也就是说即使文件只有1个字节,也会占用4k.

这下楼主明白否?

ls -l则是文件的实际大小。建议主楼在详细读一下linux基础篇。呵呵

你先看一下你自己系统分区时的块大小,
/sbin/tune2fs -l /dev/***
如果是4K就对了,如果你的是1K的话文件指向的node也要占块大小

回答4:

-s 使用单位不一样嘛