Compute o tamanho da pasta apenas para uma determinada extensão de arquivo

0

Eu tenho uma pasta contendo todos os meus projetos PHP, eu gostaria de um comando que produzisse o tamanho da pasta de cada projeto, mas apenas para os arquivos *.php dentro dele. Idealmente, a saída seria algo assim:

project1 7,0M
project2 13,3M
...
    
por COil 19.08.2014 / 10:07

2 respostas

1

Supondo que você tenha uma pasta que contenha apenas pastas de projeto, você pode executar o seguinte nessa pasta:

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

Explicação: nós iteramos sobre todas as pastas do projeto. Em cada pasta, encontramos todos os arquivos *.php . Calculamos o tamanho total desses arquivos e geramos o nome da pasta do projeto e o tamanho computado.

Na primeira linha, simplesmente usei * para iterar em todas as pastas do projeto. Supondo que seu diretório de trabalho atual seja uma pasta que contenha apenas pastas de projeto. No entanto, você pode substituir isso por algo mais preciso, por exemplo, for proj in /home/user/proj1 /var/www/proj2 /opt/proj3 , para iterar apenas em pastas específicas.

    
por Malte Skoruppa 19.08.2014 / 10:19
0

Sem problemas:

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

Você pode criar scripts para mostrar todos:

#!/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
    
por krowe 19.08.2014 / 10:13