grep 搜索目录时,怎样排除某些目录?

使用 grep 搜索目录时,会将一些隐藏目录也给搜进去,比如 .git 目录。如何在使用 grep 时排除这些目录呢?

阅读 27.1k
5 个回答

使用 --exclude-dir 选项。

语法

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

单个目录示例

grep -E "http"  ./ -R --exclude-dir=.git 

多个目录示例

grep -E "http"  . -R --exclude-dir={.git,res,bin}

多个文件示例

附赠一个,排除扩展名为 java 和 js 的文件

grep -E "http"  . -R --exclude=*.{java,js}

grep太罗嗦,用ack吧。源码搜索的不二之选~默认排除各种版本库,可以指定多种源文件类型。

─(~/.cheat)(ruby-1.9.3-p547@rails3.1.1)────────────────────────────────────────────────────────────────────(shuleiqin@shuleiqin-F8Vr:pts/0)─┐
└─(23:14:07 on master)──> ls                                                                                                  ──(一,12月08)─┘
alias  bash  crontab  DirectoryArchitecture  echo    Git   kill  MachineProperties  passwd  Python     Regex     tree     usermod  Vi
awk    Bash  df       du                     export  grep  less  markdown           python  README.md  shutdown  useradd  vi       zip
┌─(~/.cheat)(ruby-1.9.3-p547@rails3.1.1)────────────────────────────────────────────────────────────────────(shuleiqin@shuleiqin-F8Vr:pts/0)─┐
└─(23:14:16 on master)──> ack grep                                                                                             ──(一,12月08)─┘

grep
2:grep pattern file
5:grep -i pattern file
7:# Recursively grep for string <pattern> in folder:
8:grep -R pattern folder
11:grep -Rl {search} {path}
14:grep -Rli {search} {path}
17:grep -f pattern_file file
20:grep -v pattern file
22:# You can grep with regular expressions
23:grep "^00" file  #Match lines starting with 00
24:grep -E "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" file  #Find IP add
28:grep -rnw 'directory' -e "pattern"
30:# Exclude grep from your grepped output of ps.
32:ps aux | grep '[h]ttpd'
35:ps aux | grep -E --color 'bash|$'

README.md
43:+ 每个命令的cheat,尽量不超过终端全屏下的一个屏幕。知识点的cheat原则上不限长度,但每个主题都尽量简短,方便ack或者grep查找。

example:
grep -rn your_dir | grep -v your_don't_want_to_grep

新手上路,请多包涵

This is Great Wonderful Coding Technique.. I am impressing Thanks..

Netsuite Partners

新手上路,请多包涵

ack-grep 自动忽略repository和binary的folder。搜索source code非常棒。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进