Linux的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位数字的大小(因此您会看到文件大小,例如-lh6.1K151K7.1M15M等。

参数在ls的手册页中进行了描述; 1.5G并搜索--block-size。它还允许使用MB / MiB以外的单元,并且从它的外观(我没有尝试过)中也可以选择任意块大小(因此您如果需要,可以看到文件大小为429字节的块数。)

请注意,man lsSIZE都是开放组--block-size之上的GNU扩展名,因此,如果您没有GNU用户区(大多数Linux安装都具有)。GNUCoreutils 8.5中的-h确实如上所述支持--block-size和-h。感谢kojiro指出了这一点。

评论


可能需要注意一个差异:--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

#2 楼

ls -lh给出了人类可读的文件格式,长格式。

根据需要使用k,M,G和T后缀(或无后缀的字节),因此数量保持较小,例如1.4K178M-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