linux下如何统计部分文件大小,有很多文件夹,还包含子文件件夹,统计出所有包含‘123’的文件的总大小

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux下如何统计部分文件大小,有很多文件夹,还包含子文件件夹,统计出所有包含‘123’的文件的总大小相关的知识,希望对你有一定的参考价值。

查看某个文件夹或文件的大小是: du -sm filename,

查找某些目录下某些文件文件夹的大小: find . -name "条件" | xargs du -sm

你如果想查所有包含123的文件的大小的话,使用linux命令可能就很难做到了,使用shell脚本可以实现到,你可以在shell脚本中先查出来所有名字是123的文件,搜索结果中会是全路径形式的,你取文件所在的目录,然后使用上面的方式统计出来包含123文件的所有文件夹的总大小.

例如:

    先搜出来所有123的文件:find . -name "123"

    /temp/123

    /temp/f1/123

    /temp/f2/123

    获取文件所在的文件夹

    /temp

    /temp/f1

    /temp/f2

    然后 ***| xargs du -sm

    把上面的值加起来

追问

不好意思,不会写脚本。
是:find . -name "123*" | xargs du -sm
改成.sh文件,执行吗?

参考技术A b=0
for i in `find /tmp/ -name "*123*" |xargs du -sm | awk 'print $1'`; do b=$((b+i)); done
echo $b


这个单位是m。把/tmp换成你的文件夹,试试这样行不

追问

文件名字中都包含“空格”,如123 233353.ts
名称如果设置成“123*”,脚本则提示123不是文件夹,233353.ts不是文件夹
名称如果设置成“123空格*”,脚本统计出的结果是所有文件的大小的总和,包括非123开头的文件。

追答for i in `find /tmp/sh/ -name "*123*" |xargs -I du -sm  | awk 'print $1'`; do b=$((b+i)); done


跟刚才基本一样就是把xargs带个-I参数。

本回答被提问者采纳
参考技术B ls -lR | grep 123 | wc -l

linux下如何统计一个目录下的文件个数以及代码总行数的命令

参考技术A 知道指定后缀名的文件总个数命令:find . -name *.cpp | wc -l知道一个目录下代码总行数以及单个文件行数:find . -name *.h | xargs wc -llinux统计文件夹中文件数目第一种方法:ls -l|grep “^-”|wc -lls -l 长列表输出该目录下文件信息(注意这里的文件,不同于一般的文件,可能是目录、链接、设备文件等)。如果ls -lR|grep “^-”|wc-l则可以连子目录下的文件一起统计。grep ^- 这里将长列表输出信息过滤一部分,只保留一般文件,如果只保留目录就是 ^dwc -l 统计输出信息的行数,因为已经过滤得只剩一般文件了,所以统计结果就是一般文件信息的行数,又由于一行信息对应一个文件,所以也就是文件的个数。第二种方法:find ./ -type f|wc -l由于默认find会去子目录查找,如果只想查找当前目录的文件用需要说明的是第二种方法会比第一种方法快很多,尤其是也统计子目录时。本回答被提问者采纳

以上是关于linux下如何统计部分文件大小,有很多文件夹,还包含子文件件夹,统计出所有包含‘123’的文件的总大小的主要内容,如果未能解决你的问题,请参考以下文章

linux下如何根据文件大小来清除文件内容

linux下如何统计一个目录下的文件个数以及代码总行数的命令

linux下怎么查看文件夹中各个文件的大小

du和df统计的磁盘分区大小不一致

Linux 下统计文件夹大小及文件数量

linux下如何统计目录大小