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
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1224
Accepted
David Barry
David Barry
Asked: 2010-08-06 10:20:23 +0800 CST2010-08-06 10:20:23 +0800 CST 2010-08-06 10:20:23 +0800 CST

如何从命令行确定目录(文件夹)的总大小?

  • 772

是否有一个简单的命令来显示目录(文件夹)中所有文件的总聚合大小(磁盘使用量)?

我已经尝试过这些,但他们没有做我想做的事:

  • ls -l,它只显示目录中单个文件的大小,也不显示
  • df -h,它只显示我磁盘上的可用空间和已用空间。
filesystem command-line
  • 13 13 个回答
  • 1446713 Views

13 个回答

  • Voted
  1. Best Answer
    Marcel Stimberg
    2010-08-06T10:27:35+08:002010-08-06T10:27:35+08:00

    命令du“总结每个文件的磁盘使用情况,递归地为目录”,例如,

    du -hs /path/to/directory
    
    • -h是获取“人类可读”的数字,例如 get140M而不是143260(以 KBytes 为单位的大小)
    • -s用于摘要(否则您不仅会获得文件夹的大小,还会获得文件夹中的所有内容)

    在您使用-h时,您可以使用对人类可读的值进行排序

    du -h | sort -h
    

    上的-h标志sort将考虑“人类可读”大小值。


    如果要避免递归列出所有文件和目录,可以提供--max-depth参数来限制显示的项目数。最常见的,--max-depth=1

    du -h --max-depth=1 /path/to/directory
    
    • 1765
  2. geekQ
    2012-10-11T23:24:38+08:002012-10-11T23:24:38+08:00

    最近我发现了一个很棒的基于 ncurses 的交互式工具,它可以快速为您提供有关目录大小的概述。多年来一直在寻找这种工具。

    • 快速向下钻取文件层次结构
    • 您可以从工具内部删除例如巨大的临时文件
    • 极快

    把它想象成命令行的猴面包树:

    apt-get install ncdu
    
    • 221
  3. Brad
    2014-12-20T08:32:21+08:002014-12-20T08:32:21+08:00

    这会递归地找到大小并将其放在每个文件夹名称旁边,以及底部的总大小,全部采用人类格式

    du -hsc *
    
    • 84
  4. myusuf3
    2010-08-06T10:22:53+08:002010-08-06T10:22:53+08:00

    享受!

    du foldername
    

    有关该命令的更多信息在这里

    • 20
  5. vivekyad4v
    2016-10-07T06:05:49+08:002016-10-07T06:05:49+08:00

    以下是我用来打印总数、文件夹和文件大小的内容:

    $ du -sch /home/vivek/* | sort -rh
    

    细节

     ------------------------------------------------------------
       -c, --total
              produce a grand total
       -h, --human-readable
              print sizes in human readable format (e.g., 1K 234M 2G)
       -s, --summarize
              display only a total for each argument
     -------------------------------------------------------------
       -h, --human-numeric-sort
              compare human readable numbers (e.g., 2K 1G)
       -r, --reverse
              reverse the result of comparisons
    

    输出

     70M    total
     69M    /home/vivek/Downloads/gatling-charts-highcharts-bundle-2.2.2/lib
    992K    /home/vivek/Downloads/gatling-charts-highcharts-bundle-2.2.2/results
    292K    /home/vivek/Downloads/gatling-charts-highcharts-bundle-2.2.2/target
     52K    /home/vivek/Downloads/gatling-charts-highcharts-bundle-2.2.2/user-files
    
    • 19
  6. αғsнιη
    2015-01-28T04:37:49+08:002015-01-28T04:37:49+08:00

    tree是这个工作的另一个有用的命令:

    只需通过安装它sudo apt-get install tree并键入以下内容:

    tree --du -h /path/to/directory
    ...
    ...
    
    33.7M used in 0 directories, 25 files
    

    从人树:

    -h    Print  the size of each file but in a more human readable way, e.g. appending a size letter for kilo‐
          bytes (K), megabytes (M), gigabytes (G), terabytes (T), petabytes (P) and exabytes (E).
    
    --du  For each directory report its size as the accumulation of sizes of all its files and  sub-directories
          (and their files, and so on). The total amount of used space is also given in the final report (like
          the 'du -c' command.)
    
    • 16
  7. pdp
    2016-02-05T10:56:45+08:002016-02-05T10:56:45+08:00

    答案很明显,这du是查找目录总大小的工具。但是,有几个因素需要考虑:

    • 有时,du输出可能会产生误导,因为它报告文件系统分配的空间,这可能与单个文件大小的总和不同。通常文件系统会为一个文件分配 4096 字节,即使你只存储了一个字符!

    • 由于 2 的功率和 10 单位的功率导致的输出差异。-h开关将du字节数除以 2^10 (1024)、2^20 (1048576) 等,以提供人类可读的输出。许多人可能更习惯于看到 10 的幂(例如 1K = 1000, 1M = 1000000)并对结果感到惊讶。

    要查找目录中所有文件的总大小(以字节为单位),请执行以下操作:

    find <dir> -ls | awk '{sum += $7} END {print sum}'
    

    例子:

    $ du -s -B 1
    255729664
    
    $ find .  -ls | awk '{sum += $7} END {print sum}'
    249008169
    
    • 5
  8. Zombo
    2017-03-28T03:48:15+08:002017-03-28T03:48:15+08:00

    您可以使用工具灰尘:

    PS C:\git> dust
       0B       ┌── templates           │                                      █ │   0%
       0B     ┌─┴ git-core              │                                      █ │   0%
       0B   ┌─┴ share                   │                                      █ │   0%
      76B   ├── readme.md               │                                      █ │   0%
     156K   │   ┌── less.exe            │▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒█ │   2%
     2.7M   │   ├── git-remote-https.exe│▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒█████████████████ │  42%
     3.6M   │   ├── git.exe             │▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██████████████████████ │  56%
     6.5M   │ ┌─┴ git-core              │███████████████████████████████████████ │ 100%
     6.5M   ├─┴ libexec                 │███████████████████████████████████████ │ 100%
     6.5M ┌─┴ .                         │███████████████████████████████████████ │ 100%
    

    我的示例来自 Windows,但也支持 Linux 和 Apple:

    https://github.com/bootandy/dust

    • 4
  9. qwr
    2021-02-22T22:44:26+08:002021-02-22T22:44:26+08:00

    要查看所有文件和目录的大小,请使用

    du -had1 dir/
    

    (也许像“你有 1”)

    • -h:人类可读的尺寸
    • -a: 显示文件,而不仅仅是目录
    • -d1: 仅在深度 1 显示总计,即当前目录的内容

    对于当前目录,目录参数可以省略。

    du -sh dir/*具有相同的效果,但由于 shell globbing 而不会显示隐藏的文件和目录。

    • 3
  10. WinEunuuchs2Unix
    2021-03-04T13:45:02+08:002021-03-04T13:45:02+08:00

    我ll习惯于使用别名为ls -alF. 它只是缺少底部的文件数和文件大小。我玩过,du但tree无法得到我需要的总数。所以我创造lll了为我做这件事。

    在您的~/.bashrc位置以下:

    lll () {
        ls -alF "$@"
        arr=($(ls -alF "$@" | awk '{TOTAL+=$5} END {print NR, TOTAL}'))
        printf " \33[1;31m ${arr[0]}\33[m line(s).  "
        printf "Total size: \33[1;31m ${arr[1]}\33[m\n"
    #    printf "Total size: \33[1;31m $(BytesToHuman <<< ${arr[1]})\33[m\n"
    }
    

    保存文件并使用它的资源. ~/.bashrc(或者您可以重新启动终端)。


    样本输出

    输出的好处ll是它的颜色。lll这在使用findor时保持但丢失du:

    lll 样本输出.png


    TL;博士

    您可以添加的奖励功能~/.bashrc称为BytesToHuman()。这完成了大多数控制台用户期望将大量数字转换为 MiB、GiB 等的操作:

    function BytesToHuman() {
    
        # https://unix.stackexchange.com/questions/44040/a-standard-tool-to-convert-a-byte-count-into-human-kib-mib-etc-like-du-ls1/259254#259254
    
        read StdIn
    
        b=${StdIn:-0}; d=''; s=0; S=(Bytes {K,M,G,T,E,P,Y,Z}iB)
        while ((b > 1024)); do
            d="$(printf ".%02d" $((b % 1024 * 100 / 1024)))"
            b=$((b / 1024))
            let s++
        done
        echo "$b$d ${S[$s]}"
    
    } # BytesToHuman ()
    

    接下来翻转函数中两行之间的注释,lll ()如下所示:

    #    printf "Total size: \33[1;31m ${arr[1]}\33[m\n"
        printf "Total size: \33[1;31m $(BytesToHuman <<< ${arr[1]})\33[m\n"
    

    现在您的输出如下所示:

    lll 样本输出 2.png

    一如既往,不要忘记. ~/.bashrc在进行更改时重新获取资源。(或者当然是重启终端)

    PS - 两周的自我隔离终于让我有时间实现这个五年前的目标。

    • 3

相关问题

  • 如何从命令行刻录双层 dvd iso

  • 如何从命令行判断机器是否需要重新启动?

  • 如何避免启动时出现“S to Skip”消息?

  • 文件权限如何工作?文件权限用户和组

  • 如何在 Vim 中启用全彩支持?

Sidebar

Stats

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

    如何安装 .run 文件?

    • 7 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    如何获得 CPU 温度?

    • 21 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Marko Smith

    如何使用命令行将用户添加为新的 sudoer?

    • 7 个回答
  • Marko Smith

    更改文件夹权限和所有权

    • 9 个回答
  • Marko Smith

    你如何重新启动Apache?

    • 13 个回答
  • Marko Smith

    如何卸载软件?

    • 11 个回答
  • Marko Smith

    如何删除 PPA?

    • 26 个回答
  • Martin Hope
    NES 如何启用或禁用服务? 2010-12-30 13:03:32 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    Olivier Lalonde 如何在结束 ssh 会话后保持进程运行? 2010-10-22 04:09:13 +0800 CST
  • Martin Hope
    David B 如何使用命令行将用户添加为新的 sudoer? 2010-10-16 04:02:45 +0800 CST
  • Martin Hope
    Hans 如何删除旧内核版本以清理启动菜单? 2010-08-21 19:37:01 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve