使用 ls 进行管道传输时,grep 命令在 solaris 中不起作用

when piped with ls, grep command is not working in solaris

我在 solaris 中使用以下命令

ls -l | grep '*PROC*'

但它不起作用。我有许多文件的名称中包含 "PROC",例如 XREF_PROC.complete,但是当我使用上述命令时,它没有显示任何输出。当我使用 ls *PROC* 时它可以工作但不能与 grep 一起使用。

谢谢

永远不要将 ls 输出通过管道传递给 grep。使用 find 代替:

find -maxdepth 1 -name '*POC*' 

不过,仅作说明。上面语句的基本问题是正则表达式,应该是grep 'PROC'而不是

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

ls -l | grep PROC

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

以下不会像 nsilent22 已经声明的那样工作,这与 OS:

无关
ls -l | grep '*PROC*'

万一文件在 PRO.

之前的名称中有一个 * 字符,它会起作用

如果 *PROC* 仅扩展一次,即如果只有一个文件在其自己的名称中包含 PROC:

,则以下文件将(某种程度上)工作
ls -l | grep *PROC*

这也可以解释您在 Solaris 和 Linux 之间观察到的行为差异,但实际上与 OS 无关。您告诉我们在 Solaris 下有很多名称中带有 PROC 的文件,但在 Linux.

下可能只有一个

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

ls -l *PROC*