AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 36902
In Process
splattne
splattne
Asked: 2009-07-08 01:45:20 +0800 CST2009-07-08 01:45:20 +0800 CST 2009-07-08 01:45:20 +0800 CST

查找文件大小(以 MB 为单位)

  • 772
锁定。这个问题及其答案被锁定,因为这个问题离题但具有历史意义。它目前不接受新的答案或交互。

如何在 UNIX 命令行中查找文件的大小(以 MB 为单位)?

unix
  • 9 9 个回答
  • 45281 Views

9 个回答

  • Voted
  1. laalto
    2009-07-08T02:12:20+08:002009-07-08T02:12:20+08:00

    如果您的ls支持--block-size(例如 GNU coreutils ls)确实如此:

    ls -s --block-size=1048576 filename | cut -d' ' -f1
    
    • 10
  2. dfa
    2009-07-08T01:46:49+08:002009-07-08T01:46:49+08:00

    du -h file

    或者

    ls -lh file

    编辑

    这个答案是错误的,因为它也可以以 Gb/Kb 报告大小,具体取决于文件的大小。请删除赞成票。

    • 8
  3. ericslaw
    2009-07-08T06:28:00+08:002009-07-08T06:28:00+08:00

    我倾向于使用“du -k myfile”来获取千字节并在视觉上删除最后三位数字,但我只是在寻找近似大小。

    结果证明 du 经常(总是?)有 MB 的 -m 选项。

    请记住,文件的大小可能与使用的磁盘空间量略有不同,因为磁盘分配是以块而不是字节为单位的。

    如果您因为磁盘空间不足而正在寻找“胖”文件,那将是一个更有启发性的问题,因为解决方案会更加多样化。

    • 6
  4. sud03r
    2009-07-08T02:03:30+08:002009-07-08T02:03:30+08:00

    使用 -lh 选项将为您提供人类可读形式的大小,例如,如果您的文件大小为 1025 M,它将输出 1G,否则您可以使用 ls --block-size=1024K -s 它将以最接近的整数形式给出大小(以 MB 为单位) .
    如果您需要精确的值(不是四舍五入的值),您可以使用 awk:

    ls -l | awk '/d|-/{printf("%.3f %s\n",$5/(1024*1024),$9)}'
    
    • 3
  5. Amandasaurus
    2009-07-08T03:13:50+08:002009-07-08T03:13:50+08:00

    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
    

    (但在这种情况下它会四舍五入)

    • 2
  6. findrbot_admin
    2017-07-03T16:35:32+08:002017-07-03T16:35:32+08:00

    我找到了一个 AWK 1 班轮,它有一个错误,但我修复了它。我还在 TeraBytes 之后添加了 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] }')
    

    考虑到stat不是在每个系统上,您几乎总是可以使用 AWK 解决方案。例子; 树莓派没有stat但它有awk。

    • 2
  7. FerranB
    2009-07-08T02:58:56+08:002009-07-08T02:58:56+08:00

    你可以使用一个很小的 ​​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
    
    • 1
  8. user364461
    2016-07-09T09:48:32+08:002016-07-09T09:48:32+08:00

    我在另一个线程上看到了这个并且喜欢结果。在 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,您可以选择增加小数位数。上面的例子,使用 %.9f 会给出:

    0.530388314  GB
    
    • 0
  9. fitorec
    2019-07-10T10:11:07+08:002019-07-10T10:11:07+08:00

    试试这个例子:

    size=$(du file |  awk '{print $1/1000}')
    
    echo "the size is ${size} MB"
    
    • 0

相关问题

  • 从失败的 UNIX 包升级中恢复的最佳实践?

  • 没有 Unix 管理员就无法生存的工具 [关闭]

  • 大规模的日志传输和聚合

  • 如何及时了解有关 UNIX 软件补丁和升级的最新信息?

  • 您为服务器使用和推荐哪种 UNIX 文件系统?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve