目录中所有文件内容的总大小

Art*_*ldt 99 linux embedded shell

当我使用ls或时du,我得到每个文件占用的磁盘空间量.

如果我打开每个文件并计算字节数,我需要文件和子目录中所有数据的总和.如果我可以在不打开每个文件并计数的情况下获得此奖励积分.

Ark*_*ady 105

如果你想要"表观大小"(即每个文件中的字节数),而不是磁盘上文件占用的大小,请使用-b--bytes选项(如果你有一个带有GNU coreutils的Linux系统):

% du -sbh <directory>
Run Code Online (Sandbox Code Playgroud)

  • @MathiasBynens反转标志的顺序(即du -sbh <dir>).适合我. (6认同)
  • 是否有一种简单的方法以人类可读的格式显示"表观大小"?使用`du -shb`时(如本答案所示),`-b`设置似乎会覆盖`-h`设置. (3认同)
  • @MathiasBynens`du -sh --apparent-size/dir /` (2认同)
  • @Arkady我在CentOS和Ubuntu上尝试过你的解决方案,但是有一个小错误.你想要"du -sbh"."-h"标志必须是最后一个. (2认同)

rob*_*rob 44

用途du -sb:

du -sb DIR
Run Code Online (Sandbox Code Playgroud)

(可选)添加h选项以获得更加用户友好的输出:

du -sbh DIR
Run Code Online (Sandbox Code Playgroud)

  • -b似乎是MacOS'du的非法选择 (4认同)
  • @lynxoid:您可以使用brew安装GNU版本:`brew install coreutils`.它将作为命令`gdu`提供. (3认同)

And*_*aal 24

cd到目录,然后:

du -sh
Run Code Online (Sandbox Code Playgroud)

FTW!

最初在这里写到:https: //ao.gl/get-the-total-size-of-all-the-files-in-a-directory/

  • 适合我(在OS X上) (2认同)
  • 这很简单,不起作用。它打印目录在磁盘上占用的空间,而不是通过打开每个文件并计算字节数可以计算出的内容总大小。 (2认同)

Bar*_*run 16

只是另一种选择:

ls -lAR | grep -v '^d' | awk '{total += $5} END {print "Total:", total}'
Run Code Online (Sandbox Code Playgroud)

grep -v '^d' 将排除目录.

  • 完美,还添加-a参数来获取"隐藏文件"(以句点开头的任何内容) (4认同)

Nel*_*son 13

stat的"%s"格式为您提供文件中的实际字节数.

 find . -type f |
 xargs stat --format=%s |
 awk '{s+=$1} END {print s}'
Run Code Online (Sandbox Code Playgroud)

随意替换您喜欢的方法来汇总数字.

  • 最好使用"find.-type f -print0 | xargs -0 ..."来避免某些文件名(包含空格等)的问题. (4认同)
  • 带有空格的文件名需要`find -print0`和`xargs -0`.OS X需要`stat -f%z`. (2认同)