用grep提取信息

时间:2015-04-09 10:22:55

标签: bash du

在我的Ubuntu 14.10服务器上,我需要检查位于

的用户文件夹的大小

/home/docks/*userid*

我是一个bash新手,但我已经走到了这一步

du -csh /home/docks/userid | grep total将返回,比方说,

16K total

现在我并不关心总数,所以我想进一步调整,只需要16K。我想在shell脚本中有一种相对简单的方法。我非常感谢任何能够告诉我如何做的人。

2 个答案:

答案 0 :(得分:1)

一个简单的awk将完成你不需要去grep的工作。

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

OR

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)肯定前瞻,断言匹配必须后面跟着一个或多个空格字符的字符串total

答案 1 :(得分:1)

当语言版本与英语不同时,您可能会在计算用户文件夹的大小时出现问题,并且'总计'输出中的单词可能以不同的语言出现。

一点点" hack"防止出现这种情况(考虑到摘要总是打印在du输出中的最后一行):

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

或者你可以使用:

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