我在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'
。