Вычислить размер папки только для данного расширения файла

У меня есть папка, содержащая все мои проекты PHP, я хотел бы команду, которая выводит размер папки каждого проекта, но только для файлов *.php внутри него. В идеале результат будет примерно таким:

project1 7,0M
project2 13,3M
...
0
задан 19 August 2014 в 12:07

2 ответа

Принятие Вас имеет папку, которая содержит только папки проекта, Вы могли выполнить следующее в той папке:

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, для итерации только по определенным папкам.

0
ответ дан 19 August 2014 в 12:07

Никакая проблема:

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
0
ответ дан 19 August 2014 в 12:07

Другие вопросы по тегам:

Похожие вопросы: