如何在UNIX命令行中以MB为单位查找文件的大小?
如果你的ls支持--block-size如GNU coreutils ls所做的那样:
ls -s --block-size=1048576 filename | cut -d' ' -f1
du -h file
ls -lh file
编辑
这个答案是错误的,因为它可以用Gb / Kb来报告大小,这取决于文件的大小。 请删除upvotes 。
我倾向于使用“du -k myfile”来获取千字节,并直观地删除最后三位数字,但我只是寻找近似的大小。
原来,du经常(总是?)对MB有-m选项。
请记住,文件的大小可能与使用的磁盘空间量略有不同,因为磁盘分配出现在块中,而不是字节。
如果由于磁盘空间不足而寻找“胖”文件,这将是一个更具启发性的问题,因为解决scheme将更加多样化。
使用-lh选项会给你的大小以人类可读的forms,例如,如果你的文件的大小是1025M,它将输出1G,否则你可以使用ls –block-size = 1024K -s它将给出大小在最近的整数MB 。
如果你需要精确的值(不是四舍五入的),你可以去awk:
ls -l | awk'/d|-/{printf("%.3f%s \ n“,$ 5 /(1024 * 1024),$ 9)}'
stat可以做到这一点。
$ ls -l | grep myfile -rw------- 1 rory rory 3120 2009-07-02 16:58 myfile $ stat -c '%s' myfile 3120
以字节为单位给你
你可以使用bash的算术来计算兆字节数:
$ echo $(( $( stat -c '%s' myfile ) / 1024 / 1024 )) 0
(但在这种情况下,它会降低)
您可以使用一个小小的Python脚本:
$ cat ./size_in_mb.py #!/usr/local/bin/python import os import sys print os.path.getsize(sys.argv[1])/1048576 $ ls -l test.tgz -rw-r--r-- 1 root root 258330336 Jul 7 00:04 test.tgz $ ./size_in_mb.py test.tgz 246
嘿大家,
我发现有人做了一个AWK 1class轮,它有一个错误,但我修好了。 我也在TerraBytes之后join了PetaBytes。
FILE_SIZE= 234234 # FILESIZE IN BYTES FILE_SIZE=$(echo "${FILE_SIZE}" | awk '{ split( "B KB MB GB TB PB" , v ); s=1; while( $1>1024 ){ $1/=1024; s++ } printf "%.2f %s", $1, v[s] }')
考虑到统计不在每一个系统上,我会使用AWK解决scheme。 例; 树莓派没有统计,但它确实awk 。
享受〜!
我在另一个线程上看到了这一点,喜欢的结果。 在AIX下,我使用了
ls -l [filename] | awk '{$5=sprintf("%.3f GB", $5/1024^3)} 1'
产生3位小数的GB计数
输出示例
ls -l /tmp/myfile: -rw-rw-rw- 1 owner group 0.530 GB Jul 8 10:33 /tmp/myfile
如果文件小于1 MB,您可以select增加小数。 上面的例子使用%.9f来代替:
0.530388314 GB