2012-10-15 33 views
3

我正在嘗試在文本文件中搜索.c,.cpp.h文件包含文件列表。然而,當我有問題,當我跑:爲什麼我會收到意想不到的令牌?

$ grep -sr ^.*\.(c|cpp|h)$ . 
bash: syntax error near unexpected token `(' 
+1

因爲'('有一個特殊的意思是在bash中,你需要逃避它 –

+0

@ÁlvaroG.Vicario - 不是逃避,那會是'\(',但把正則表達式模式引用到... –

+0

轉義將工作但是,也是如此。 – chepner

回答

2

我沒有Unix機器測試,但:

grep -sr '^.*\.(c|cpp|h)$' . 

...至少應該不會觸發語法錯誤。

1

你要善於與

grep -sr '\.(c|cpp|h)$' . 
  1. 正則表達式應該是在引號
  2. 沒有必要包括在模式^.*部分
相關問題