如何查找目录中多个文件的数量和总大小?

ajn*_*r95 3 linux bash shell redhat sh

我有一个目录,里面有多个目录,其中包含多种类型的文件。

我想找到*.jpg文件,然后获取所有单个文件的数量和总大小。

我知道我必须使用find wc -landdu -ch 但我不知道如何将它们组合在单个脚本或单个命令中。

find . -type f name "*.jpg" -exec- 不知道如何连接这三个

cor*_*nuz 6

假设您的起始文件夹是.,这将为您提供所有文件和总大小:

find . -type f -name '*.jpg' -exec du -ch {} +
Run Code Online (Sandbox Code Playgroud)

最后一次对所有文件+执行du -ch- 而不是每个文件,让您获得 frand 总数。如果您只想知道总数,请| tail -n 1在末尾添加。

公平警告:这实际上执行

du -ch file1 file2 file3 ... 
Run Code Online (Sandbox Code Playgroud)

这可能会破坏很多文件。要检查有多少:

$ getconf ARG_MAX
2097152
Run Code Online (Sandbox Code Playgroud)

这就是我的系统上的配置。

但这并没有给你文件的数量。您需要捕获 的输出find并使用它两次。

最后一行是总数,因此我们将使用除最后一行之外的所有行来获取文件数,最后一行获取总数:

OUT=$(find . -type f -name '*.jpg' -exec du -ch {} +)
N=$(echo "$OUT" | head -n -1 | wc -l)
SIZE=$(echo "$OUT" | tail -n 1)
echo "Number of files: $N"
echo $SIZE
Run Code Online (Sandbox Code Playgroud)

这对我来说给出:

Number of files: 143
584K    total
Run Code Online (Sandbox Code Playgroud)