当使用ls进行管道连接时,grep命令在solaris中不起作用



我在solaris中使用以下命令

ls -l | grep '*PROC*'

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

谢谢

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

ls -l | grep PROC

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

下面的代码不会像nsilent22已经说过的那样工作,这与操作系统无关:

ls -l | grep '*PROC*'

如果文件名中PRO之前有一个*字符,这将在不太可能的情况下工作。

如果*PROC*只展开一次,也就是说,如果只有一个文件以自己的名字命名PROC,下面的一个将工作(有点):

ls -l | grep *PROC*

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

在任何情况下,在这里使用grep基本上是无用的,除非在非常特殊的情况下,目录中有太多匹配*PROC*的文件,它们的名称与环境相适应。否则,使用这个更简单的命令就会得到预期的结果:

ls -l *PROC* 

永远不要用管道将ls输出到grep。使用find代替:

find -maxdepth 1 -name '*POC*' 

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

最新更新