Friday, March 19, 2010

locate搭配regexp找header檔

給未來的裕翔

如果想要找header

locate .h一定會跑出很多不要的東西

建議搭配regexp, -r

locate -r \.h
這樣會有問題, 要加引號, 單引號雙引號皆可
問題的來源我猜是反斜線被shell用, 而不是regexp, 不過沒特地去驗證


locate -r '\h'
這樣會有問題, .html檔也會被找出來, 要加行尾符號, $


locate -r '\h$'
這樣會有問題, 副檔名hpp的也是header檔, 要標示p的存在可能


locate -r '\hp*$'
這樣應該就沒問題了^^


如果我只要找/home/bob/Downloads/OpenCV-2.0.0底下的header


locate -r '\.hp*$' | grep '/home/bob/Downloads/OpenCV-2.0.0'

如果我想看哪些header檔內容定義我要的關鍵字, ex: lrint

grep lrint $(locate -r '\.hp*$' | \grep '/home/bob/Downloads/OpenCV-2.0.0' ) | grep def
(定義可能是typedefdefine, 所以我在最後加grep def)

注意: 上例如果沒有前面的\.

那所有檔案或路徑還有h的都會被找出來

因為p*是可不存在的

No comments:

Post a Comment