1

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

du /tmp/dir1

这产生了文件的总大小:

7   /tmp/dir1

然后我解析并使用细节。

这个文件夹充满了.txttxr文件。我只对*.txt文件的总大小感兴趣。

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

4

5 回答 5

2

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

du -s /tmp/dir1/*.txt

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

du -c /tmp/dir1/*.txt | tail -1
于 2014-12-16T10:58:44.113 回答
2

du没有简单的方法来过滤输出;但是我们可以使用findwithstat来获取文件大小,然后awk总结一下:

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

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

于 2014-12-16T10:59:06.543 回答
1

使用--exclude选项:

du --exclude '*.krt' /tmp/dir1
于 2014-12-16T11:01:31.113 回答
1

以下是可能的选项:

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

du -csh *.txt

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

find -name "*.txt" -exec du -csh '{}' +

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

于 2020-11-23T19:45:09.663 回答
0

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

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

  • s 代表目录的总和。
  • h 表示人类可读的格式。
于 2014-12-16T19:25:31.430 回答