ls命令:如何显示文件大小(以兆字节为单位)?


161

在Unix(Tru64)中,如何使ls命令显示以兆字节为单位的文件大小?目前,我可以使用以下命令以字节为单位显示它:

ls -la

Answers:


247

也许-h对您来说足够了:

-h
与-l选项一起使用时,请使用单位后缀:字节,千字节,兆字节,千兆字节,太字节和PB,以便使用以2为基数的大小将位数减少到三位或更少。

ls -lah

一般建议:man commandname用于阅读某些命令的手册/帮助,例如,此处man ls


1
谢谢,但是-h选项在Tru64 Unix上似乎不存在。

8
一般建议:安装GNU实用工具...
reinierpost 2010年

22
我喜欢您关于使用人工的提示,但实际上,在很多时候(相比现在,当我在Google上发现此结果时),在Google上的搜索比使用人工要快得多。
trusktr 2013年

4
Google的提示很好,所有提示都是通用的,但手册页最终是系统/ OS,甚至是特定于主机的,通常是在编译或安装软件时创建的,因此对特定系统上的软件具有权威性。
Nevin Williams

1
即将发布,有一个在线的gnu / linux用户:linux.die.net/man
MariusMatutiae

32

ls --block-size=M打印以兆字节为单位的大小,但对于1 MB以下的任何内容也显示1MB。不过,我不确定此选项在您的UNIX版本的ls中是否可接受。

ls -lh如果文件足够大,实际上也可以以GB为单位打印大小(无论如何:在Linux 64位上,它确实可以工作:>)

在侧面节点上:du -sh *在当前目录中也打印目录大小。


谢谢!我需要监视文件夹中的实时文件更改,并且ls -h文件增长到1GB以上后,使用毫无意义,因此我在1秒的循环中使用此命令:while true ; do ls -al --block-size=M ; sleep 1 ; done
ccpizza

15

您将不得不使用它awk来为您做数学:

ls -l | awk 'BEGIN{mega=1048576} $5 >= mega {$5 = $5/mega "MB"} {print}'

这不会影响小于的文件的输出mega

您可能需要调整字段编号以匹配您ls的布局方式。如果您mega愿意,可以将其更改为“ 1000000”。

这将打印出更多的小数位数,而不是您想要的。您可以实现舍入功能。


3
ls -lhor 优雅得多ls --block-size=M,但是AWK非常有用!
Statwonk 2014年

正是我所需要的。所有其他解决方案都四舍五入到最接近的MB,但这显示了几个小数位,并且可以轻松自定义。
zeroimpl 2014年

3
对于那些没有-h选项的系统(AIX-我在看着你),这是一个很好的解决方案。
Buggabill


8

try ls -lash,它以人类可读的格式打印尺寸


5

du -sm filename.txt


1
它总是四舍五入...如果大小小于1 MB,例如500K,那么它将打印1M
AnonGeek 2012年

5

您也可以输入

du -sh ./*

这将以人类可读的格式列出当前目录下的所有文件夹,包括更常见的文件大小(Kb,Mb和Gb)。


2

如果只需要特定文件的大小,则该命令是对先前答案的简单推断,它是:

ls -sh 文件名

-s适用于尺寸,h适用于人类可读(如上所述几次)。

输出将如下所示:

753M myfilename

如果省略文件名,它将列出目录,将每个文件的大小放在文件名旁边,这ls -la与不使用文件名参数调用时的文件名不同。

希望这可以帮助。


2
这个问题与Tru64 Unix有关,OP在大约五年前就声明该系统-h中不存在该选项ls
G-Man

2
ls -l --block-size=MB 

对于--block-size参数:

  • 使用MB为10 ^ 6
  • M用于2 ^ 20

请注意,这不会显示任何小数位。同样,大于0 kB但不大于1 MB的任何内容都将显示为1MB。因此,我发现ls -l --block-size=kB它更有用。
DaAwesomeP

0

如果您仅对文件大小感兴趣,而不必使用该ls命令,请尝试以下操作:

# echo "Hello World" > file.txt
# ls -l file.txt 
-rw-r--r-- 1 user user 12 Mar 10 11:32 file.txt
# stat --printf='%s\n' file.txt
12

这将打印文件大小,而无需解析任何内容。


OP想要以MB为单位的大小,也许stat选项会产生人类可读形式的大小?
Archemar

啊,那真是愚蠢。感谢您抓住这一点。据我所知,stat没有使用--printf或其他任何选项来控制大小的选项。可能需要结合使用printf和bc命令行实用程序。在这种情况下,何必麻烦。ls和cut / awk会更快。
SKN
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.