我在solaris中使用以下命令
ls -l | grep '*PROC*'
但它不起作用。我有很多文件包含" PROC"在他们的名字像XREF_PROC.complete但当我使用上面的命令时它没有显示任何输出。当我使用ls *PROC*
它的工作但不使用grep。
由于
答案 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'
。