1 (13.05.2014 12:04:25 отредактировано sacredwow)

Здравствуйте. Возникла следующая ситуация на работе. Требуется подсчитать размер директорий обойдя несколько дир, пользователем которой является root. Пример:

# pwd
/home
# ls -al

user1:user1  user1
user2:user2 user2
root:root same_folder
user3:user3 user3
root:root same-folder2

требуется подсчитать суммарный размер всего, кроме дир, пользователь которых root. По отдельности я подсчитал:

find . -maxdepth 1 -not -user root -exec du -sh {} \;

но как это теперь просуммировать?  Заранее спасибо!

2 (13.05.2014 12:28:49 отредактировано Ager)

du -shc `find /home/* -maxdepth 0 -not -user root`

но эта конструкция не будет работать, если в /home есть каталоги с '.' в начале имени    /home/.some_dir

3 (13.05.2014 12:30:43 отредактировано sacredwow)

Ager спасибо. Мы с коллегой вот что придумали(токо не смейтесь громко  ab ):

find /home -maxdepth 1 -not -user root -type d -exec du -shm {} \; | awk '{print $1}' > /root/tmp1;y=0;  while read line;do y=$(echo "$y+$line" | bc -q);done < /root/tmp1; echo $y; rm -f /root/tmp1

4 (13.05.2014 16:23:43 отредактировано Ager)

раз не нужны промежуточные размеры каталогов, то пойдет и так:

du -shm `find /home -maxdepth 1 -not -user root`

или немного оптимизированный ваш велосипед  bv

find /home -maxdepth 1 -not -user root -exec du -shm {} \; | awk '{ s+=$1 } END { print s }'