2015-11-09 2 views
1

Как я могу получить общий размер определенных папок?Как получить общий размер определенных папок в bash?

Например, у меня есть список конкретных имен папок в users.txt

# cat users.txt 
user1 
user2 
user3 

всех эти папки размещают в/доме/

Я попытался выполнить:

# for i in `cat users.txt`; do du -shc /home/$i/; done 
3.9M /home/user1/ 
3.9M total 
141M /home/user2/ 
141M total 
75M /home/user3/ 
75M total 

, но мне нужен общий размер всех этих папок.

+0

Рассмотрят, разместив свой вопрос в: Http: //unix.stackexchange .com/ – alfasin

ответ

3
du -shc $(sed '[email protected]^@/home/@' users.txt) 

Это использует содержимое users.txt, предваряется /home/, в качестве аргументов в du, поэтому он будет подводить их для вас.

+1

Насколько я понимаю, файл содержит только имена пользователей, а не полный путь. – alfasin

+1

@alfasin: Благодарю вас, я пропустил эту часть. Исправлено. –

+0

@John Zwinck: спасибо, это именно то, что мне нужно! – Dragon

-1

Вы можете передать вывод их к хвосту -n 1 или выполнить

du -s directory 

Чтобы получить только размер вы можете сделать

du -s directory | cut -f1 
+0

Возможно, я не совсем понимаю проблему, поэтому получаю отрицательную карму. – nintyfan