LinuxForum.Fans
Тема

Вопрос по du(или find)

Автор: sacredwow 4 сообщений 3110 просмотров
#379855

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

text
# pwd
/home
# ls -al

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

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

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

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

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

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

#379858

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

text
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
#379898

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

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

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

text
find /home -maxdepth 1 -not -user root -exec du -shm {} \; | awk '{ s+=$1 } END { print s }'
Войдите или зарегистрируйтесь, чтобы ответить.