带有特殊表达式的 grep

Sup*_*ish 2 ls grep gnome-terminal

我的目录中有一些二进制文件和一些.c扩展文件。

这里的输出使用 ls

arrays.c basic0 basic0.c fromfb fromfb.c oute oute.c segmen.c simp simp.c

在这里我只想过滤二进制文件,所以我使用

ls |grep -v .c
Run Code Online (Sandbox Code Playgroud)

此命令列出所有文件,然后使用grepI get files,除了那些不以 .c 结尾的文件

我期望的是

basic0
fromfb
oute
simp
Run Code Online (Sandbox Code Playgroud)

但我得到了什么

fromfb
oute
simp
Run Code Online (Sandbox Code Playgroud)

缺少 basic0 二进制文件。这有什么问题?

Arc*_*mar 10

按照 man grep

时期 。匹配任何单个字符。

因此grep .c匹配任何字符后跟c

您可能正在寻找grep -v \.c或更好grep -v '\.c$'

在哪里

  • \. 逃避的特殊含义。
  • c
  • $ 行尾(当通过管道传输到 ls 时输出一个文件名 par 行)

正如通配符所建议的那样,您还可以使用grep -vF .c-F标志告诉 grep 将 arg 用作简单字符串,而不是正则表达式。