如何计算按模式(例如*.JPG)过滤的磁盘使用情况?

如何计算按模式(例如*.JPG)过滤的磁盘使用情况?

如何递归计算目录中仅某些文件消耗的磁盘空间?

答案1

find -iname '*.jpg' -print0 | du --files0-from=- -h -c | tail -1

  1. -iname搜索不区分大小写
  2. -print0写入NUL而不是换行
  3. --files0-from=-NUL读取而不是换行符,从参数中读取stdin而不是从参数中读取
  4. -h以人类可读的格式输出结果(例如,1K而不是1024
  5. -c输出总计(例如,23G
  6. tail -1将仅输出总计,抑制单个文件大小

答案2

zsh

zmodload zsh/stat

stat -LA blocks +blocks -- **/*.jpg(NDoN)
print $(( (${(j[+])blocks} + 0) * 512 ))

将打印名称以 结尾的所有文件.jpg(包括带有限定符的隐藏文件D)的累积磁盘使用情况。请注意,如果同一个文件有多个硬链接,它们的磁盘使用量将被计算多次(这与大多数du实现的做法不同)。

如果某些文件是或键入目录,这只会计算目录文件本身的磁盘使用情况,而不是遍历这些目录时可以找到的文件的磁盘使用情况(与 的另一个区别du)。

相关内容