Shell 使用;“杜”;某些文件类型的总文件大小
我一直在使用Shell 使用;“杜”;某些文件类型的总文件大小,shell,unix,du,Shell,Unix,Du,我一直在使用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
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
命令。例如:
du -s /tmp/dir1/*.txt
仅获取总大小的一个可能解决方案是获取du
输出的最后一行,如下所示:
du -c /tmp/dir1/*.txt | tail -1
du
没有一种简单的方法来过滤输出;但是我们可以使用find
和stat
来获得文件大小,然后使用awk
来总结:
$ find /tmp/dir1 -name '*.txt' -exec stat -c %s {} + | awk '{s+=$1} END {print s}'
注意,由于不兼容的
stat
参数,这只适用于Linux/GNU系统。du
没有一种简单的方法来过滤输出;但是我们可以使用find
和stat
来获得文件大小,然后使用awk
来总结:
$ find /tmp/dir1 -name '*.txt' -exec stat -c %s {} + | awk '{s+=$1} END {print s}'
注意:由于不兼容的stat
参数,这只适用于Linux/GNU系统。使用--exclude
选项:
du --exclude '*.krt' /tmp/dir1
使用--exclude
选项:
du --exclude '*.krt' /tmp/dir1
您还可以通过以下命令检查目录和文件的大小 导航到路径(/tmp/dir1)
du-sh*
或du-sh/tmp/dir1
- s表示目录的总和
- h表示人类可读的格式
du-sh*
或du-sh/tmp/dir1
- s表示目录的总和
- h表示人类可读的格式
- 如果希望在同一目录(/tmp/dir1)中显示每个“.txt”文件的大小。 最后,它还将打印所有“.txt”文件的总大小
- 以下是可能的选项:
du-csh*.txt
- 递归地在给定的任意深度的dirs/sub dirs中查找每个“.txt”文件的大小,并在末尾打印所有这些文件的总大小
注意:您可以用任何其他文件类型替换.txt以下是可能的选项:
- 如果希望在同一目录(/tmp/dir1)中显示每个“.txt”文件的大小。 最后,它还将打印所有“.txt”文件的总大小
du-csh*.txt
- 递归地在给定的任意深度的dirs/sub dirs中查找每个“.txt”文件的大小,并在末尾打印所有这些文件的总大小
注意:您可以将.txt替换为任何其他文件类型这样做的一个潜在问题是,如果目录包含的文件太多(即超过ARG_MAX),则该文件将被破坏;这可能不是现在的情况,但我已经学会(艰难的方式)不依赖shell globbing来完成这类事情…这很好,但我正在寻找一行输出,这将列出每个
.txt
文件及其大小,我想要总数。如果你想要总数,只需使用:du-cs/tmp/dir1/*。txt使用| tail-1
的神奇家伙正是我想要的!非常感谢!这样做的一个潜在问题是,如果目录包含太多的文件(即超过ARG_MAX),则会中断该操作;这可能不是现在的情况,但我已经学会(艰难的方式)不依赖shell globbing来完成这类事情…这很好,但我正在寻找一行输出,这将列出每个.txt
文件及其大小,我想要总数。如果你想要总数,只需使用:du-cs/tmp/dir1/*。txt使用| tail-1
的神奇家伙正是我想要的!非常感谢!谢谢,我喜欢这个解决方案,将来一定会用。谢谢,我喜欢这个解决方案,将来一定会用。很好的解决方案,我喜欢你的想法。遗憾的是,这在我的特定系统上不起作用。@DustinCook这就是为什么要在问题中提到您的环境:-)UNIX(-like)系统并不总是非常可移植的,不幸的是…@DustinCook;-)无论如何,你应该提到它,如果只是为了防止像这样的“错误”答案;它浪费了你的时间去阅读和尝试,也浪费了我的时间去测试它以确保我得到了正确的答案。例如,如果您提到“我正在使用AIXVersionFoo”,我可能不会费心,因为我不确定AIX支持什么和不支持什么,并且宁愿不给出答案,也不愿给出错误的答案……很好的解决方案,我喜欢您的想法。遗憾的是,这在我的特定系统上不起作用。@DustinCook这就是为什么要在问题中提到您的环境:-)UNIX(-like)系统并不总是非常可移植的,不幸的是…@DustinCook;-)无论如何,你应该提到它,如果只是为了防止像这样的“错误”答案;它浪费了你的时间去阅读和尝试,也浪费了我的时间去测试它以确保我得到了正确的答案。例如,如果您提到“我正在使用AIXVersionFoo”,我可能就不会费心了,因为我不确定AIX支持什么和不支持什么,宁愿不给出答案,也不愿给出错误的答案。。。