用ls管道时,grep命令在solaris中不起作用

时间:2015-07-24 09:59:05

标签: linux unix grep solaris ls

我在solaris中使用以下命令

ls -l | grep '*PROC*'

但它不起作用。我有很多文件包含" PROC"在他们的名字像XREF_PROC.complete但当我使用上面的命令时它没有显示任何输出。当我使用ls *PROC*它的工作但不使用grep。

由于

3 个答案:

答案 0 :(得分:4)

你写的是"让所有行包含*个字符,然后包含PRO字符串和零个或多个C个字母。 试试这个

ls -l | grep PROC

答案 1 :(得分:3)

您正在Linux和Solaris中运行不同的命令。

以下不会像nsilent22所说的那样工作,这与操作系统无关:

ls -l | grep '*PROC*'

如果文件在*之前的名称中有PRO个字符,那么它会起作用。

如果*PROC*仅扩展一次,即如果只有一个文件的PROC以其自己的名称扩展,则以下一个将起作用(类型):

ls -l | grep *PROC*

这也可以解释您在Solaris和Linux之间可能观察到的行为差异,但实际上与操作系统无关。你知道在Solaris下它们的名字中有许多带有PROC的文件,但在Linux下可能只有一个文件。

在任何情况下,在这里使用grep几乎是无用的,除非在特定情况下,目录中有太多文件匹配*PROC*以使其名称适合环境。否则,您可以使用这个更简单的命令获得预期的结果:

ls -l *PROC* 

答案 2 :(得分:1)

永远不要将ls输出传递给grep。请改用find

find -maxdepth 1 -name '*POC*' 

但是,只是为了解释。上述语句的基本问题是正则表达式,而应该是grep 'PROC'