我有一个包含所有 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