【转发】Linux中强有力且常用命令:find、grep

.c,a,他哥俩可以算是必会的linux命令,在linux下面工作

图片 1

你供给接受以下工具:

  • find命令
    • find命令的平常方式
    • find命令的常用选项及实例
    • find与xargs
  • grep命令
    • grep命令的肖似情势
    • grep正则表明式元字符集(基本集卡塔尔(قطر‎
    • grep命令的常用选项及实例

其中

2.3、grep命令的常用选项及实例

-?

再正是出示相称行上下的?行,如:grep -2 pattern
filename同临时候体现相配行的左右2行。

-b,–byte-offset

打字与印刷相称行后面打字与印刷该行所在的块号码。

-c,–count

只打字与印刷相称的行数,不彰显相称的内容。

-f File,–file=File

从文件中提取模板。空文件中包蕴0个模板,所以如何都不相配。

-h,–no-filename

当寻找两个文件时,不显得相配文件名前缀。

-i,–ignore-case

忽略大小写差异。

-q,–quiet

撤废展现,只回去退出状态。0则表示找到了极其的行。

-l,–files-with-matches

打字与印刷相称模板的文件项目清单。

-L,–files-without-match

打印不兼容模板的文件清单。

-n,–line-number

在合营的行前边打字与印刷行号。

-s,–silent

不显得关于空头支票可能不可能读取文件的错误新闻。

-v,–revert-match

反招来,只展现不合营的行。

-w,–word-regexp

如果被\<和\>引用,就把表达式做为一个单词寻找。

-V,–version

突显软件版本新闻。

=====

ls -l | grep ‘^a’ 通过管道过滤ls -l输出的剧情,只展现以a以前的行。

grep ‘test’ d* 呈现全体以d初叶的文本中含有test的行。

grep ‘test’ aa bb cc 展现在aa,bb,cc文件中相配test的行。

grep ‘[a-z]’
aa 展现全部富含每一种字符串至罕有5个一连小写字符的字符串的行。

grep ‘w(es)t.*’
aa 假若west被相配,则es就被积累到内部存款和储蓄器中,并标志为1,然后找寻大陆个字符(.*卡塔尔,那些字符后边紧跟着此外八个es(State of Qatar,找到就显示该行。如若用egrep或grep
-E,就绝不””号实行转义,直接写成’w(esState of Qatart.*’就能够了。

grep -i pattern files :不区分轻重缓急写地找寻。默许情况分别轻重缓急写

grep -l pattern files :只列出优良的文书名,

grep -L pattern files :列出不相配的文书名,

grep -w pattern
files :只相当整个单词,实际不是字符串的一部分(如匹配‘magic’,实际不是‘magical’卡塔尔,

grep -C number pattern files :相配的上下文分别展现[number]行,

grep pattern1 | pattern2 files :展现相称 pattern1 或 pattern2 的行,

grep pattern1 files | grep pattern2 :呈现既匹配 pattern1 又非凡pattern2 的行。

高亮匹配到的情势

在寻觅多量文件的时候你能够轻便地高亮情势:

$ grep --color=auto -iR 'getChar();' *.c

2、grep命令

grep (global search regular expression(RE卡塔尔 and print out the
line,周详寻觅正则表明式并把行打字与印刷出来卡塔尔国是一种强大的文本搜索工具,它能采纳正则表明式寻找文本,并把相称的行打印出来。

输入以下命令:

2.1、grep命令的貌似采纳及实例

grep [OPTIONS] PATTERN [FILE…] 
grep [OPTIONS] [-e PATTERN | -f FILE] [FILE…]

grep命令用于寻找由帕特tern参数钦点的方式,并将每一种相称的行写入标准输出中。这个情势是有着约束的正则表明式,它们利用ed或
egrep命令样式。假若在File参数中钦命了四个名称,grep命令将展现包罗相配行的公文的称号。对
shell 有特异意义的字符 ($, *, [, |, ^, (, ), \ State of Qatar 出将来Pattern参数中时必得带双引号。假设帕特tern参数不是简单字符串,经常必需用单引号将全方位格局括起来。在比如
[a-z], 之类的表明式中,-(减号)cml
可依据前段时间正值收拾的行列来钦点多个限量。收拾系列能够定义等价的类以供在字符范围中运用。若是未钦点任何文件,grep会假定为正式输入。

grep 'string' *.txt
grep 'main(' *.c
grep '#include<example.h>' *.c
grep 'getChar*' *.c
grep -i 'ultra' *.conf
grep -iR 'ultra' *.conf

1.2、find命令的常用选项及实例

  • -name 
    依据文件名查找文件。 
    find /dir -name filename 
    在/dir目录及其子目录上面查找名为filename的文件 
    find . -name “*.c”
    在当前目录及其子目录(用“.”表示)中追寻任何扩充名称为“c”的文书
  • -perm 
    依照文件权限来查找文件。 
    find . -perm 755 –print
    在当前目录下查找文件权限位为755的文书,即文件属主能够读、写、推行,其余顾客能够读、奉行的公文
  • -prune 
    采取这一选项能够使find命令不在当前点名的目录中探究,假设还要利用-depth选项,那么-prune将被find命令忽略。 
    find /apps -path “/apps/bin” -prune -o
    –print 在/apps目录下查找文件,但不希望在/apps/bin目录下查找 
    find /usr/sam -path “/usr/sam/dir1” -prune -o
    –print 在/usr/sam目录下搜索不在dir1子目录以内的有着文件
  • -user 
    遵从文件属主来查找文件。 
    find ~ -user sam –print 在$HOME目录中查找文件属主为sam的公文
  • -group 
    家有家规文件所属的组来查找文件。 
    find /apps -group gem –print 在/apps目录下寻找归属gem顾客组的公文 
  • -mtime -n +n 
    根据文件的改造时间来查找文件, – n代表文件改正时间隔以后n天以内,+
    n表示文件改过时间距以后n天从前。 
    find / -mtime -5 –print 在系统根目录下寻觅改革时间在5日之内的公文 
    find /var/adm -mtime +3
    –print 在/var/adm目录下搜寻校正时间在3日以前的文件
  • -nogroup 
    检索无有效所属组的文件,即该文件所属的组在/etc/groups中不设有。 
    find / –nogroup -print
  • -nouser 
    追寻无有效属主的文书,即该文件的属主在/etc/passwd中一纸空文。 
    find /home -nouser –print
  • -newer file1 ! file2 
    搜索改革时间比文件file1新但比文件file2旧的公文。
  • -type 
    搜寻某一品类的公文,诸如: 
    b – 块设备文件。 
    d – 目录。 
    c – 字符设备文件。 
    p – 管道文件。 
    l – 符号链接文件。 
    f – 普通文书。 
    find /etc -type d –print 在/etc目录下搜寻全部的目录 
    find . ! -type d
    –print 在当前目录下查找除目录以外的持有类别的公文 
    find /etc -type l –print 在/etc目录下搜寻全数的标识链接文件
  • -size n:[c]
    查找文件长度为n块的公文,带有c时表示文件长度以字节计。 
    find . -size +1000000c –print 在当前目录下查找文件长度超越1
    M字节的文件 
    find /home/apache -size 100c
    –print 在/home/apache目录下查找文件长度恰巧为100字节的文书 
    find . -size +10
    –print 在当前目录下搜寻长度超越10块的文书(一块等于512字节)
  • -depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中研究。 
    find / -name “CON.FILE” -depth
    –print 它将首先相称全数的公文然后再进入子目录中查找 
  • -mount:在查找文件时不超越文件系统mount点。  
    find . -name “*.XC” -mount
    –print 从当前目录初步查找坐落于本文件系统普通话件名以XC结尾的文件(不进来其余文件系统)
  • -follow:如若find命令碰着符号链接文件,就追踪至链接所针对的文本。

为查找到的模式突显文件名和行号

你恐怕须要彰显文件名和行号:

$ grep --color=auto -iRnH 'getChar();' *.c

其中,

  • -n : 在输出的每行后边增加以 1 最初的行号。
  • -H : 为每种相称打字与印刷文件名。要物色四个公文时那是暗许选项。(LCTT
    译注:-h 选项免强遮掩文件名;别的 -l 和 -L
    选项用于仅凸显相称/不包容的公文名,而 -H 和
    -h用于调节在彰显相配行前展现/不展现文件名,注意区分。)

$grep --color=auto -nH 'DIR' *

出口样例:

图片 1

图 01: grep 命令展现搜索到的格局

您也能够采纳 find 命令:

$ find . -name "*.c" -print | xargs grep "main("

转载自: