仅计算给定文件扩展名的文件夹大小

仅计算给定文件扩展名的文件夹大小

我有一个包含所有 PHP 项目的文件夹,我想要一个命令来输出每个项目的文件夹大小,但仅限于*.php其中的文件。理想情况下,输出应如下所示:

project1 7,0M
project2 13,3M
...

答案1

假设您有一个仅包含项目文件夹的文件夹,您可以在该文件夹中运行以下命令:

for proj in *; do
  phpfiles=$(find $proj -iname '*.php')
  size=$(du -ch $phpfiles | tail -n 1 | cut -d\t -f1)
  echo $proj $size
done

解释:我们遍历所有项目文件夹。在每个文件夹中,我们找到所有*.php文件。我们计算这些文件的总大小,并输出项目文件夹的名称和计算出的大小。

在第一行中,我简单地使用了*来迭代所有项目文件夹。这是假设您当前的工作目录是仅包含项目文件夹的文件夹。但是,您可以将其替换为更精确的内容,例如,for proj in /home/user/proj1 /var/www/proj2 /opt/proj3,以仅迭代特定文件夹。

答案2

没问题:

find /var/www/site/ -type f -name "*.php" -exec du -shc {} + | tail -1 | awk '{print $1}'

您可以编写脚本来显示所有内容:

#!/bin/bash

cd /var/www/
for i in $(find ./* -maxdepth 0 -type d)
do
    prjSz=$(find $i -type f -name "*.php" -exec du -shc {} + | tail -1 | awk '{print $1}')
    echo "${i:2}: $prjSz"
done

相关内容