如何grep一行最多包含一个正斜杠?

时间:2010-08-28 12:23:11

标签: regex grep

我正在尝试获取当前目录下的顶级目录的大小(在Solaris上)。因此,我正在使用grep并且只想匹配那些具有单个正斜杠的行,即。顶级目录。

类似的东西:

du -h | grep -e <your answer here>

但我没有尝试过。帮助赞赏!

4 个答案:

答案 0 :(得分:5)

grep -e '^[^/]*/[^/]*$'

请注意,这会匹配只有一个(不是最多一个)斜杠的行,但这对您的使用来说应该没问题。

您也可以使用-s开关

执行某些操作
du -hs */

答案 1 :(得分:3)

您还可以使用-v选项匹配您不需要的内容:

ptimac:Tools pti$ du | grep -v '/.*/'
22680   ./960-Grid-System
137192  ./apache-activemq-5.3.0
23896   ./apache-camel-2.0.0
386816  ./apache-servicemix-3.3.1
251480  ./apache-solr-1.4.0
345288  ./Community Edition-IC-96.SNAPSHOT.app

(我现在首先检查了solaris手册页; - )

GNU系统还有其他方法可以在不使用正则表达式的情况下对该猫进行皮肤处理:

find . -d1 

查找深度为1的所有文件/文件夹

我在清理 house 磁盘时经常使用的命令是:

du -d1

或(这也适用于Solaris)

du | sort -n

显示了当前目录下面最大的目录。

答案 2 :(得分:1)

这不能完全回答你的问题,但你为什么不让gdu为你做这个?

gdu --max-depth=1

如果你真的想采用grep的方式,那怎么样?

du -h| grep -v '/.*/'

这将过滤掉带有两个或多个斜杠的行,留下那些有一个或零的斜杠。

答案 3 :(得分:0)

du --max-depth=1 -h