2011-11-18 137 views
7

如何在排除特定目錄的同時使用grep進行遞歸搜索?如何使用grep在遞歸搜索中排除目錄?

背景:我有一個大的目錄組成的日誌文件,我想在搜索中消除。最簡單的方法是移動日誌文件夾。不幸的是,我不能這樣做,因爲項目授權的位置。

任何想法如何做到這一點?

回答

10

你在找這個嗎?

從grep的手冊頁:

--exclude-dir=DIR 
      Exclude directories matching the pattern DIR from recursive searches. 
+0

謝謝了,我有時忘了,還有man page :) – Kiran

+0

@KiranChandrashekhar請接受給定的答案。 – FailedDev

+2

舊版本的grep沒有這個標誌,這是一個恥辱:(。 – ale

0

作爲替代,如果你可以在搜索中使用find,也可能是有用的:

find [directory] -name "*.log" -prune -o -type f -print|grep ...
[directory]實際上是當前目錄,如果你想(只是一個 .會做)。

下一部分,-name "*.log" -prune都在一起。它使用模式*.log搜索文件名,並將它們從你的結果中刪除。

接下來是-o(爲 「或」)

然後,-type f -print它說 「打印(到stdout)的任何類型的是文件」。

這些結果應該包括在[directory]中找到的每個文件(沒有返回目錄),除了以.log結尾的文件。那麼你可以按照你的需要結果grep