使用" du"对于某些文件类型的总文件大小

时间:2014-12-16 10:55:37

标签: shell unix du

我一直在使用du命令来获取目录的大小:

du /tmp/dir1

这产生了文件的总大小:

7   /tmp/dir1

然后我解析并使用详细信息。

此文件夹中包含.txttxr个文件。 我只对*.txt文件的总大小感兴趣。

有没有办法可以对du命令进行修改,以生成只有*.txt文件大小的单行输出?

5 个答案:

答案 0 :(得分:2)

将文件列表传递给du命令。例如:

du -s /tmp/dir1/*.txt

仅获得总大小的可能解决方案是获取du输出的最后一行,如:

du -c /tmp/dir1/*.txt | tail -1

答案 1 :(得分:2)

du没有简单的方法来过滤输出;但我们可以findstat一起使用以获取文件大小,然后使用awk对其进行总结:

$ find /tmp/dir1 -name '*.txt' -exec stat -c %s {} + | awk '{s+=$1} END {print s}' 

请注意,这仅适用于Linux / GNU系统,因为stat参数不兼容。

答案 2 :(得分:1)

使用--exclude选项:

du --exclude '*.krt' /tmp/dir1

答案 3 :(得分:0)

您还可以通过以下命令检查目录和文件的大小。

导航至路径( / tmp / dir1 du -sh * du -sh /tmp/dir1

  • 表示目录总和。
  • h代表人类可读的格式。

答案 4 :(得分:0)

以下是可能的选项:

  • 如果要在同一目录(/ tmp / dir1)中设置每个“ .txt”文件的大小。 最后,它还会打印所有“ .txt”文件的总大小

du -csh *.txt

  • 在给定的任意深度的目录/子目录中递归地找到每个“ .txt”文件的大小,并在末尾打印所有这些文件的总大小。

找到-name“ * .txt” -exec du -csh'{}'+

注意:您可以将.txt替换为任何其他文件类型