2012-09-10 49 views
6

如何讓grep命令在由locate命令找到的路由指定的文件中找到某些單詞?使用grep命令並找到

locate my.cnf | grep user 

(我想是grep命令搜索上找到了定位命令文件的單詞「用戶」)

回答

10

取而代之的管道,使用命令替換:

grep user `locate my.cnf` 
+0

我喜歡這個比下面的'xargs'方法更好,因爲它保持了grep的高亮顯示 –

+0

@moeso:您可以讓grep始終使用'--color = always'提供顏色輸出。 – cha0site

0

也許grep user $(locate my.cnf)是你在找什麼,如果我正確地理解你的問題。

+3

請注意,如果'locate'命令返回太多數據,將會崩潰並燒燬。命令行大小不是無限的。 – cha0site

10

嘗試:

locate my.cnf | xargs grep user 
+0

這個選項是正確的,但馬特首先回應,它的工作原理。謝謝。 – Jhonathan

+2

@Jonathan - 如果結果相當小,亞光的作品。如果結果可以任意大,你應該更喜歡'xargs'。 –

0

爲了當定位結果在名稱空間發揮好與的情況下,你可以這樣做

locate -0 my.cnf | xargs -n1 -0 grep user 
+0

顯示三次相同的輸出 – Jhonathan

+0

沒有任何開關'grep'會自動輸出所有匹配行(您的文件可能有多行匹配)。如果你希望在它們前面顯示行號,你可以使用'-n'開關作爲grep。否則,你可以用'-m 1'只輸出每個文件的第一個匹配項,或者只輸出與'-l'匹配的文件名。 –

+0

你有理由。抱歉, – Jhonathan