2013-05-15 68 views
0
一個正則表達式查找命令

我寫的成功返回包含關鍵字「字體」所有的PDF文件的命令:使用與搜索字符串

find /my/path/PDFFiles/ -type f -name "*.pdf" -exec grep -H "Font" '{}' ';' 

沒有與此命令,我想有一些限制克服。

問題

  1. 我將如何使用正則表達式對我的搜索字符串,其中我目前做的只是「字體」
  2. 如何調整上面的命令返回所有文件名,其中的關鍵詞「字體「不存在?

由於

回答

2

1)grep支持正則表達式的開箱。所以只要擺脫""。例如,如果你想「不」或「字體」

find /my/path/PDFFiles/ -type f -name "*.pdf" -exec grep -H "[df]ont" '{}' ';' 

2)grep,您還可以用-v命令排除項。因此,要排除「字體」嘗試:

find /my/path/PDFFiles/ -type f -name "*.pdf" -exec grep -vH "Font" '{}' ';' 

您還可以使用find小號prune選項,如this question

+0

詳細[DF] ONT,不帶引號的,下的zsh將失敗與錯誤'zsh的:沒有找到匹配:[df] ont'(永遠不會執行命令)。引用總是比較安全的(但是特別是在表達式中存在「?」或「*」的情況下,它易於被shell解釋)。 – kampu

+0

謝謝@ kampu!我相應地更新了我的答案。我其實只是切換到zsh,但愚蠢地只檢查它跑在bash!我會知道下一次。 「引用總是比較安全」的好處。 – Ewan