ls
需要什么命令来显示文件大小(以MB为单位)?#1 楼
ls -l --block-size=M
将为您提供长格式列表(需要实际查看文件大小),并将文件大小四舍五入到最接近的MiB。如果要MB(10 ^ 6字节)而不是MiB(2 ^ 20个字节)单位,请改用
--block-size=MB
。如果您不希望将
M
后缀附加到文件大小,则可以使用类似--block-size=1M
的名称。感谢StéphaneChazelas提出了这个建议。这将使用文件大小单位来保持大约1-3位数字的大小(因此您会看到文件大小,例如-lh
,6.1K
,151K
,7.1M
,15M
等。参数在ls的手册页中进行了描述;
1.5G
并搜索--block-size
。它还允许使用MB / MiB以外的单元,并且从它的外观(我没有尝试过)中也可以选择任意块大小(因此您如果需要,可以看到文件大小为429字节的块数。)请注意,
man ls
和SIZE
都是开放组--block-size
之上的GNU扩展名,因此,如果您没有GNU用户区(大多数Linux安装都具有)。GNUCoreutils 8.5中的-h
确实如上所述支持--block-size和-h。感谢kojiro指出了这一点。#2 楼
ls -lh
给出了人类可读的文件格式,长格式。根据需要使用k,M,G和T后缀(或无后缀的字节),因此数量保持较小,例如
1.4K
或178M
。-h
是GNU coreutils扩展,不是基线POSIX。请注意,这并不能完全按照要求回答问题。如果您甚至在小文件或巨型文件中都希望严格使用MiB中的大小,则MichaelKjörling的答案适用于GNU coreutils
ls
。评论
那将以大于1.0 GiB(我相信)以上的任何大小打印以GB为单位的文件大小。
–用户
13年2月8日在8:36
@MichaelKjörling我不认为这是一个错误的答案(尽管我没有投票)。有时,OP并没有按照他们的本意来表达一个问题,因此他们可能只是想要人类可读的输出,而是将其表述为“ in MB”。
–戴森
13年2月8日在14:33
已投票。 “这不能回答(MB)问题”是一个完全有效的陈述,但是由于该回答是在相同的上下文中,因此该回答仅增加了此SO页的有用性。我只是来此页面寻找通用的“以人类可读形式显示日期”要求的解决方案,并且h比--block-size = M容易编写
– Ejaz
17年3月19日在10:08
“人类可读”有点讽刺意味。如果不是人类,谁会使用ls -l? :p
– phil294
17年5月9日在14:17
@chengyang:解析ls -l输出是错误的处理方式,有99%的时间。 unix.stackexchange.com/questions/128985/why-not-parse-ls。 1%是慷慨的,并且几乎仅限于您为交互式使用而一次性编写的单行代码,而不是您将在未知文件名上重复使用的脚本。
– Peter Cordes
18-2-22在21:03
评论
可能需要注意一个差异:--block-size = M会在大小旁边显示M后缀,您可以使用--block-size = 1M来省略它。值得一提的是您还需要GNU ls(大多数非嵌入式Linux系统都将具有GNU ls)。
–StéphaneChazelas
13年2月8日在12:59
这会是GNU ls吗? Standard ls没有这样的论点。带有xsi扩展名的ls具有-s标志,这使其报告块的数量,但是没有标准标志--block-size。
– kojiro
13年2月8日在13:15
@kojiro GNU ls从coreutils 8.5开始确实具有--block-size,这是我的Debian Squeeze系统上安装的。由于该问题是明确针对Linux的,并且未指定其他任何内容,因此我承认我假设围绕gnu coreutils的用户领域。我已经更新了答案以澄清这一点。 (此外,Open Group ls似乎也没有-h :)
–用户
13年2月8日在13:34
@EmanuelBerg,1000 ^ 7(10 ^ 21)大于2 ^ 64(〜10 ^ 19.27)
–StéphaneChazelas
13年2月10日在10:17
@Tom正如答案的最后一段所说,--block-size是GNU扩展。我怀疑Mac OS X不使用GNU ls。
–用户
17年12月9日14:56