2011-02-25 49 views
2

我想要一個包含單詞「hot」(不關心大小寫)的文件的文件名列表。這些文件也應該位於/ test/home目錄下,文件名爲,以「config」開頭。UNIX grep - 如何在專門命名的文件中尋找文本?

  1. 到目前爲止我所能想到的最好的是以下幾點。但是,它只能在/ test/home目錄下運行。

grep -ilrw「hot」* | grep -i config

此方法的另一個缺點是無法檢查以「config」開頭的文件名。例如,「grep -i^config」將不匹配諸如「/test/home/configurations/config.xml」的文件。

有沒有辦法解決這個問題?

  1. 有人請解釋爲什麼以下不起作用?

grep的-ilrw 「熱」 的配置*

回答

4
find . -name 'config*' | xargs grep -i "hot" 

可能取決於您的UNIX版本了一下,我覺得

+0

假設/ test/home是當然的當前目錄;否則用實際路徑代替'.' – johusman 2011-02-25 16:10:28

+0

謝謝。那麼認爲單獨使用grep命令無法實現此操作是否正確? – Andy 2011-02-25 16:11:57

+0

應該找到命令。 -name'config *'| xargs grep -ilw「hot」。問題解決了。謝謝。 – Andy 2011-02-25 16:17:15

0

如果你是GNU電動工具的幸運用戶,找到可以做對你來說:

find /test/home -iregex ".*hot.*" -regex "config.*" 
+0

不幸的是,我們沒有GNU powertools。抱歉! – Andy 2011-02-25 16:21:02

4

如果你只是想使用grep你不遠處。我會做;

grep -Rli --include='config*' "hot" *

--include,允許你指定一個GLOB搜索並最終*讓你來調整的文件/目錄的包括水珠會努力。

+0

非常感謝。我以前不知道這個標誌。我認爲該命令應該是grep -Rl --include ='config *'「hot」* – Andy 2011-02-25 16:20:26

+0

@Andy你說的對!我已經更新了命令,以包含您有的l和i選項。 – AlG 2011-02-25 16:26:41

+0

作爲OP似乎滿意的Upvoting。 @安迪,如果是這樣的話,你應該接受這個答案。 – johusman 2011-02-25 17:00:51