如何计算忽略 PDF(或其他二进制文件)的文件大小?

如何计算忽略 PDF(或其他二进制文件)的文件大小?

我想计算目录树的文件大小,但我想忽略所有 PDF 和图像。本质上,我想弄清楚纯文本文件的大小。

我怎样才能做到这一点?

注意:这是在 Linux 环境中,特别是 RedHat

答案1

考虑如下目录结构:

$ ls -sR1
.:
total 32
4 1/
4 2/
4 m
4 n
4 o
4 x.pdf
4 y.pdf
4 z.pdf

./1:
total 0

./2:
total 8
4 a/
4 p

./2/a:
total 4
4 q

然后,为了获取所有不匹配的文件的列表*.pdf,我们可以这样做

$ find . -type f \( ! -name '*.pdf' \)

其扩展也不匹配,这*.jpg是相当明显的。然后使用  du如下:

$ du -c $(find . -type f \( ! -name '*.pdf' \))
4   ./o
4   ./m
4   ./n
4   ./2/a/q
4   ./2/p
20  total

您可能需要在其中添加一个-b来获取以字节为单位的视在大小,而不是磁盘使用量。-c给出总计。

这种方法的局限性是:

  1. 如果你的目录树非常大,它将无法工作,因为
    • 因为它扫描树两次(find+ du
    • 因为它通过命令行将输出输入find到其中,因此受到其允许的最大大小的限制。du
  2. 它(以这种简单的方法)只会根据文件名称而不是文件内容来匹配文件。

您可以通过对每个单独的文件find执行du,然后使用awk或类似的东西将它们全部加起来来解决 1.。 2. 可能会通过更有趣的检查来解决find,可能基于每个文件的输出file并将其与正面或负面列表进行匹配。

相关内容