我一直在使用du
命令来获取目录的大小:
du /tmp/dir1
这产生了文件的总大小:
7 /tmp/dir1
然后我解析并使用细节。
这个文件夹充满了.txt
和txr
文件。我只对*.txt
文件的总大小感兴趣。
有没有办法可以修改du
命令以生成仅文件大小的单行输出*.txt
?
将文件列表传递给du
命令。例如:
du -s /tmp/dir1/*.txt
仅获取总大小的可能解决方案是获取du
' 输出的最后一行,如下所示:
du -c /tmp/dir1/*.txt | tail -1
du
没有简单的方法来过滤输出;但是我们可以使用find
withstat
来获取文件大小,然后awk
总结一下:
$ find /tmp/dir1 -name '*.txt' -exec stat -c %s {} + | awk '{s+=$1} END {print s}'
请注意,由于参数不兼容,这仅适用于 Linux/GNU 系统stat
。
使用--exclude
选项:
du --exclude '*.krt' /tmp/dir1
以下是可能的选项:
du -csh *.txt
find -name "*.txt" -exec du -csh '{}' +
注意:您可以将 .txt 替换为任何其他文件类型
您还可以通过以下命令检查目录和文件的大小。
导航到路径 ( /tmp/dir1 )du -sh *
或du -sh /tmp/dir1