Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 递归输出目录中特定类型的所有文件的文件大小?_Linux_Unix - Fatal编程技术网

Linux 递归输出目录中特定类型的所有文件的文件大小?

Linux 递归输出目录中特定类型的所有文件的文件大小?,linux,unix,Linux,Unix,我试图在一个目录中递归地获得PDF文件总大小的总和。我已经尝试在目录中运行下面的命令,但是递归部分不能正常工作,因为它似乎只报告当前目录中的文件,而不包括目录中的目录。我希望结果的大小接近100GB,但是该命令只报告大约200MB的文件 find . -name "*.pdf" | xargs du -sch 请帮忙 使用stat-c%n,%s获取单个文件的文件名和大小。然后使用awk将大小相加并打印 $ find . -name '*.pdf' -exec stat -c %n,%s {}

我试图在一个目录中递归地获得PDF文件总大小的总和。我已经尝试在目录中运行下面的命令,但是递归部分不能正常工作,因为它似乎只报告当前目录中的文件,而不包括目录中的目录。我希望结果的大小接近100GB,但是该命令只报告大约200MB的文件

find . -name "*.pdf" | xargs du -sch

请帮忙

使用
stat-c%n,%s
获取单个文件的
文件名
大小
。然后使用
awk
将大小相加并打印

$ find . -name '*.pdf' -exec stat -c %n,%s {} \; | awk -F, '{sum+=$2}END{print sum}'
事实上,您不需要
%n
,因为您只需要求和:

$ find . -name '*.pdf' -exec stat -c %s {} \; | awk '{sum+=$1}END{print sum}'

使用
stat-c%n,%s
获取单个文件的
文件名
大小
。然后使用
awk
将大小相加并打印

$ find . -name '*.pdf' -exec stat -c %n,%s {} \; | awk -F, '{sum+=$2}END{print sum}'
事实上,您不需要
%n
,因为您只需要求和:

$ find . -name '*.pdf' -exec stat -c %s {} \; | awk '{sum+=$1}END{print sum}'

您可以使用以下方法获取所有文件的大小之和:

find . -name '*.pdf' -exec stat -c %s {} \; | tr '\n' '+' | sed 's/+$/\n/'| bc

首先
find
查找指定的所有文件,并为每个文件运行stat,它将打印文件大小。然后,我使用
tr
将所有换行符附加一个“+”,然后删除换行符后面的“+”,并将其传递给bc,bc将打印总和。

您可以使用以下方法获得所有文件的大小总和:

find . -name '*.pdf' -exec stat -c %s {} \; | tr '\n' '+' | sed 's/+$/\n/'| bc

首先
find
查找指定的所有文件,并为每个文件运行stat,它将打印文件大小。然后,我使用
tr
将所有换行符加上“+”,然后删除换行符后面的“+”,并将其传递给bc,bc将打印总和。

欢迎使用SO!您对“无法正常工作”的问题描述含糊不清,难以回答。你能编辑你的文章,包括实际和预期的输出吗?例如,说“我希望它显示
16.0K./file.pdf,24.0K./subdir/foo.pdf,40.0K总计
,但它显示的是
16.0K./file.pdf,16.0K总计
,这使我认为它没有像应该的那样递归。”对不起!我已经更新了问题,因此您需要所有文件或大小如iamauser posted的文件的总和吗?
find
命令应递归到子目录。试着单独运行它,看看它是否从子目录中找到文件。请注意,默认情况下,“查找”不会递归到符号链接中,因此请检查目录是否为符号链接。可能与、、等重复。您必须尽力避免找到答案。欢迎使用“查找”!您对“无法正常工作”的问题描述含糊不清,难以回答。你能编辑你的文章,包括实际和预期的输出吗?例如,说“我希望它显示
16.0K./file.pdf,24.0K./subdir/foo.pdf,40.0K总计
,但它显示的是
16.0K./file.pdf,16.0K总计
,这使我认为它没有像应该的那样递归。”对不起!我已经更新了问题,因此您需要所有文件或大小如iamauser posted的文件的总和吗?
find
命令应递归到子目录。试着单独运行它,看看它是否从子目录中找到文件。请注意,默认情况下,“查找”不会递归到符号链接中,因此请检查目录是否为符号链接。可能与、、等重复。您必须尽力避免找到答案。感谢您的回复。这似乎列出了所有文件及其大小,但没有给出总数。我怎样才能得到所有文件的大小之和?它起作用了!非常感谢!我已经接受了你的答复。谢谢你的答复。这似乎列出了所有文件及其大小,但没有给出总数。我怎样才能得到所有文件的大小之和?它起作用了!非常感谢!我已经接受了你的回答,谢谢你的回复。不幸的是,服务器没有安装“bc”,所以我无法查看这是否有效。我的回答有效,所以我接受了他们的回答。谢谢你的回答。不幸的是,服务器没有安装“bc”,所以我无法查看这是否有效。我的答案很有效,所以我接受了他们的答案