【发布时间】:2012-10-22 14:15:23
【问题描述】:
我需要grep 以与ls 命令的结果列表完全匹配。
例如,如果我 ls 一个目录,结果如下:
system
sys
sbin
proc
init.rc
init.mahimahi.rc
init.goldfish.rc
init
我想grep 看看是否存在名为“init”的文件。我需要grep 只返回一个结果。列表中只有一个名为“init”的文件。
我正在安卓设备上执行此操作。所以这里是完整的命令:
adb shell ls / | grep -E "^init$"
我需要检查android设备上是否存在目录,如果目录存在则执行操作。
我在批处理脚本中使用find 之前已经这样做了,但是我需要在Linux 上使用bash 执行此操作,并且我想要一个完全匹配的。如果有另一个目录或文件包含我正在搜索的字符串,这将避免此问题。
我已经尝试了以下链接中的建议,但是当我将“init”作为参数时,它们都没有返回结果。
【问题讨论】:
-
您为什么不简单地测试一下该文件是否存在?
-
呃...你的意思是
grep -E '^init$'不起作用? -
如果问题是避免点表示任何字符,您可以使用反斜杠将其转义为
\\.或使用fgrep -
@prolink007 -
grep -e /init与grep -E '^init$'或test -e /init的含义不同。 -
@prolink007 - 不,您已经说明了您要实现的目标,而不是您要实现它的原因。确定根目录中是否存在名为“init”的文件的方法是
test命令,而不是grep。您特别告诉我们您正在尝试将test的选项应用于grep的命令行。再次:告诉我们您真正想要实现的目标。您只是要求我们帮助您针对您面临的任何问题实施解决方案。