2015-04-09 3 views
0

На моем сервере Ubuntu 14.10 мне нужно проверить размер папки пользователя, которые расположены наИзвлечение информации с Grep

/home/docks/*userid*

Я что-то Баш новичка, но я получил это далеко

du -csh /home/docks/userid | grep total вернется, скажем,

16K total

Теперь я действительно не забочусь Або ut, поэтому я хочу обрезать это дальше и просто получить 16K. Я полагаю, что в сценарии оболочки существует относительно простой способ сделать это. Я был бы очень благодарен всем, кто мог бы мне рассказать.

+1

du -csh/home/docks/userid | grep всего | cut -d "t" -f 1 <- du выдает его с вкладками, поэтому его ta delim –

+0

@MaximilianKindshofer - небольшая коррекция: это должно быть 'cut -d \ t -f 1', так как символ пробела есть а не пробел. – DroidOS

+0

Да, я не запускал его первым, но чем я видел, что du использует вкладки –

ответ

1

У вас может возникнуть проблема с подсчетом размера пользовательских папок, если языковая версия отличается от английского, а слово «total» в выводе может отображаться на другом языке.

Немного «взломать» предотвращение от такой ситуации (с учетом, что резюме всегда печатается в последней строке в du выход):

du -csh /home/docks/userid | tail -n 1 | cut -f1 

Или вы можете просто использовать:

du -sh /home/docks/userid | cut -f1 
+0

Благодарим вас за ответы.Как я часто думаю про себя - что бы я делал без Stackoverflow. @pstanisz Я принимаю ваш ответ, так как это самый простой. Тем не менее, приятно иметь так много вариантов. – DroidOS

1

Простой awk выполнит эту работу, вам не нужно идти на grep.

du -csh /home/docks/userid | awk '/total/{print $1}' 

ИЛИ

du -csh /home/docks/userid | awk '$2 ~ /^total$/{print $1}' 

ИЛИ

du -csh /home/docks/userid | grep -oP '\S+(?=\s+total\b)' 

\S+ будет соответствовать один или более символов без пробелов. (?=\s+total\b) Положительный lookahead, который утверждает, что за совпадением должна следовать строка total, которой предшествует один или несколько символов пробела.

+1

Конечно, это также будет соответствовать, если имя любого пользовательского каталога содержит «total», поэтому 'awk 'END {print $ 1}'' может быть более уместным. –

+0

'du -csh/home/docks/userid | awk '$ 2 == "total"/{print $ 1}' ' –

Смежные вопросы