日期:2014-05-16  浏览次数:20807 次

Linux grep、find命令
一、greplinux下行过滤工具

语法:grep [options]



└─(12:15:%)── grep                                                                                                                                                ──(Tue,Jan22)─┘

usage: grep [-abcDEFGHhIiJLlmnOoPqRSsUVvwxZ] [-A num] [-B num] [-C[num]]

     [-e pattern] [-f file] [--binary-files=value] [--color=when]

     [--context[=num]] [--directories=action] [--label] [--line-buffered]

     [--null] [pattern] [file …]




     参数


  1. -A NUM,--after-context = NUM(除了列出符合行之外,并且列出后NUM行) ex:grep -A 1 GET server.20121230.log
  2. -a或--text grep原本是搜索文字文件,若拿二进制的档案作为搜寻的目标,则会显示如下的讯息:Binary file二进制文件名maches然后结束。若加上-a参数则可讲二进制档案视为文本文件搜寻,相当于--binary-files=text
  3. -B NUM,--before-context=NUM 显示的是之前的行
  4. -C[NUM],-NUM,--context[=NUM] 列出符合行之外并列出上下各NUM行,默认值是2.ex:grep -C 2 GET server.20121230.log
  5.  -b,--byte-offset 列出样式之前的内文总共有多少byte..ex:grep -b GET server.20121230.log
  6. --binary-files=TYPE
  7. -c,--count  不显示符合样式行,只显示符合的总行数。若再加上-v,--invert-match,参数显示不符合的总行书。


  8. -d ACTION, --directories=ACTION若输入的档案是一个资料夹,使用ACTION去处理这个资料夹。预设ACTION是read,也就是说此资料夹会被视为一般的档案;若ACTION是skip,资料夹将被grep略过;若ACTION是recurse,grep会去读取资料夹下所有的档案。ex:grep -d recurse GET /Users/seaeast/log
  9. -E, --extended-regexp 采用规则表示式去解释样式
  10. -e PATTERN, --regexp=PATTERN
  11. -f FILE, --file=FILE 事先将要搜寻的样式写入到一个档案,一行一个样式。然后采用档案搜寻,空的档案表示没有要搜寻的样式,因此也就不会有任何符合。ex:grep -f newfile file
  12. -G,--basic-regexp将样式视为基本的规则表示式解释
  13. -H,--with-filename在每个符合样式行前加上符合的文件名称,若有路径会显示路径。ex:(在file月testfile中搜寻panda样式)
  14. -h,--no-filename与13参数相类似,但在输出时不显示路径。
  15. --help
  16. -I grep会强制认为此二进制档案没有包含任何搜寻样式,与--biniart-files=without-match参数相同.ex:grep -I pand mv
  17. -i, --ignore-case忽略大小写
  18. -L,--files-without-matches不显示平常一般的输出结果,反而显示没有符合的文件名称
  19. -l, --files-with-matches 不显示平常一般的输出结果,只显示符合的文件名称
  20. --mmap
  21. -n,--line-number 在显示行前,标上行号。ex:grep -n demo file
  22. -q,--quit,--silent 不显示任何的一般输出
  23. -R -r,recursive 递归地,读取每个资料夹下的所有档案
  24. -s,--no-messages 不显示关于不存在活无法读取的错误讯息
  25. -V,--version
  26. -v --invert-match
  27. -w, --word-regexp
  28. -x, --line-regexp

[options]主要參數:

-c:只輸出匹配行的計數。

-I:不區分大小寫(只適用於單字符)。

-h:查詢多文件時不顯示文件名。

-l:查詢多文件時只輸出包含匹配字符的文件名。

-n:顯示匹配行及行號。

-s:不顯示不存在或無匹配文本的錯誤信息。

-v:顯示不包含匹配文本的所有行。

pattern正則表達式主要參數:

\:忽略正則表達式中特殊字符的原有含義。

^:匹配正則表達式的開始行。

$: 匹配正則表達式的結束行。

\<:從匹配正則表達式的行開始。

\>:到匹配正則表達式的行結束。

[ ]:單個字符,如[A]即A符合要求。

[ - ]:範圍,如[A-Z],即A、B、C一直到Z都符合要求。

。:所有的單個字符。

* :有字符,長度可以為0。

more /Users/seaeast/log/server.20121010.log |grep '500 GET' -n


二、find
└─(19:28:%)── find                                                                                                                                                ──(Tue,Jan22)─┘

usage: find [-H | -L | -P] [-EXdsx] [-f path] path ... [expression]

       find [-H | -L | -P] [-EXdsx] -f path [path ...] [expression]




ex:

find / -name httpd.conf

find . -name "*.log"


参考资料:

http://blog.csdn.net/greytree/article/details/428532