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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux下 为啥ls -l命令 和ls -sh 、du 显示文件的大小不一样?相关的知识,希望对你有一定的参考价值。

在x window 底下 用鼠标右键查看文件属性能看出文件大小 不过在命令行底下 如果用ls -sh 或者du 的话 显示的大小跟在x window底下的不一样 只有ls -l 查看的才与x window底下的接近。
这是为什么?
我没说目录 我查看的就是一个文件 这个你第一句话就说不通啊 还有就是在x window底下用鼠标右键查看文件的大小 按你那么说那又如何解释呢?这个我感觉是应该和在windows底下一样的吧。所以我个人觉得用ls -l查看的文件大小才是它真实的大小 但是我不知道 ls -sh 和du -sh 出来的是怎么回事?
2楼说的也不对 -h 才是你说的跟单位有关的 这么说吧 我在x window 底下用鼠标右键看到的1.1kb 大小的文件在命令行底下 用ls -l 查看到的是 1077 这个没有问题 但是用ls -sh 查到的是8k 用du 也是8k ?不知道为什么
嗯 我知道你说的什么意思 不过我查看了一下 RHEL 5.4 Block Size 1024 也就是1Kb 我用 ls -lh 查看了一下install.log 这个文件大小为 27K 而用du -h 显示的是32 为什么差这么多 照理说也应该是28K呀。。。

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

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

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

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

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

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

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

参考技术A 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这个命令了。
参考技术B 那我在详细解释一下:du 不是显示文件大小,而是显示文件所占用的 block 大小,默认linux系统分区的 block size 是4k,也就是说即使文件只有1个字节,也会占用4k.

这下楼主明白否?

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

你先看一下你自己系统分区时的块大小,
/sbin/tune2fs -l /dev/***
如果是4K就对了,如果你的是1K的话文件指向的node也要占块大小本回答被提问者采纳
参考技术C -s 使用单位不一样嘛

linux系统下:-bash: /bin/ls: Argument list too long问题

linux系统下:
(FUDE-0.4.2@x86_64)[root@HZ-WB-FTP luo]#ll *NETBAR*
-bash: /bin/ls: Argument list too long
请问怎么解决?

这个问题说明这个目录下文件太多.
可以用for 循环列出文件.
或者find . -name '*NETBAR*' 试试
参考技术A 看样子就是 指令 ls 的参数太多,检查一下ls 的使用是不是正确的

以上是关于linux下 为啥ls -l命令 和ls -sh 、du 显示文件的大小不一样?的主要内容,如果未能解决你的问题,请参考以下文章

linux文件目录

LINUX ls –lt /etc是啥意思,帮忙解释下。。

linux:基本指令

linux:基本指令

EViews中用ls y c AR(1)和ls y c y(-1)计算出的模型为啥常数项不一样,而且还差很多

Linux / MacOS 修改 ls 显示年月日的时间格式