|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
如果您觉得本篇CentOSLinux教程讲得好,请记得点击右边漂浮的分享程序,把好文章分享给你的小伙伴们!find.|xargsgrep-ri"IBM"
查找目次下的一切文件中是不是含有某个字符串,而且只打印出文件名
find.|xargsgrep-ril"IBM"
1.正则表达式
(1)正则表达式一样平常用来形貌文本形式的特别用法,由一般字符(比方字符a-z)和特别字符(称为元字符,如/、*、?等)构成。
(2)基础元字符集及其寄义
^:只婚配行首。如^a婚配以a开首的行abc,a2e,a12,aaa,......
$:只婚配行尾。如^a婚配以a开头的行bca,12a,aaa,.......
*:婚配0个或多个此单字符。如(a)*婚配空,a,aa,aaa,....
[]:只婚配[]内字符。能够是一个单字符,也能够是字符序列,用","将内里要婚配的分歧字符串分隔。也能够利用-来暗示[]内字符序列的局限,如[1-5]暗示[12345]
:只用来屏障一个元字符的特别寄义。如*,,",|,+,^,.等
.:(点)只婚配恣意单字符。
pattern{n}:只用来婚配后面pattern呈现的次数.n为次数。如a{2}婚配aa.
pattern{n,}:寄义同上,但次数起码为n.如a{2,}婚配aa,aaa,aaaa,.....
pattern{n,m}:寄义同上,但次数在n和m之间。如a{2,4}婚配aa,aaa,aaaa三个
(3)举例申明:
^$:婚配空行
^.$:婚配包括一个字符的行
*.pas:婚配以*.pas开头的一切字符或文件
[0123456789]或[0-9]:假定要婚配恣意一个数字
[a-z]:恣意小写字母
[A-Za-z]:恣意巨细写字母
[S,s]:婚配巨细写S
[0-9]{3}.[0-9]{3}.[0-9]{3}.[0-9]{3}:婚配IP地点[0-9]{3}三个0-9构成的字符串;.:婚配点(注重这里点是特别的字符,以是要用""来屏障其寄义)
2.find先容(1)查找具有某些特性文件的下令,可遍历以后目次乃至于全部文件体系来检察某些文件或目次,其遍历年夜的文件体系时一样平常放在背景实行。
(2)find下令的一样平常情势
findpathname-options[-print-exec-ok]
-pathname:find下令所查找的目次路径。如用"."来暗示以后的目次,用/来暗示体系根目次
-print:find下令将婚配的文件输入到尺度输入
-exec:find下令对婚配的文件实行该参数所给出的shell下令,响应的下令情势为
command{};(注重{}和之间的空格)
-ok和-exec的感化不异,只不外以一种更加宁静的形式来实行该参数所给出的shell下令,在实行每个下令之前,城市给出提醒,让用户来断定是不是实行。
options有以下几种:
-name:依照文件名查找文件
-perm:依照文件权限来查找文件
-user:依照文件属主来查找文件
-group:依照文件所属的组来查找文件
-mtime-n+n依照文件的变动工夫来查找文件,-n暗示文件变动工夫距如今n天之内,+n暗示文件变动工夫距如今n天之前。find下令另有-atime和-ctime选项,但它们都和-mtime选项类似。
-sizen[c]查找文件长度为n块的文件,带有c时暗示文件长度以字节计。
-nogroup查找无无效所属组的文件,即该文件所属的组在/etc/groups中不存在
-newerfile1!file2查找变动工夫比文件file1新但比文件file2旧的文件
-depth先查找指定目次有没有婚配文件,若无则再在子目次中查找
-type查找某一范例的文件,如
b:块装备文件
d:目次
e:字符装备文件
p;管道文件
l:标记链接文件
f:一般文件
(3)find下令举例
find-name"*.txt"-print查找txt开头的文件并输入到屏幕上
find/cmd".sh"-print查找/cmd目次下一切sh文件,并输入
find.-perm755-print查找以后目次下权限为755的文件,并输入
find`pwd`-userroot-print查找以后目次上司主为root的文件,并输入
find./-groupsunwill-print查找以后目次下所属主是sunwill的文件
find/var-mtime-5-print查找/var目次下变动工夫为5天内的一切文件
find/var-mtime+5-print查找/var目次下变动工夫为5天之前的一切文件
find/var-newer"myfile1"!-newer"myfile2"-print查找/var目次下比myfile1新,可是比myfile2旧的一切文件。
find/var-typed-print查找/var目次下一切目次
find/var-typel-print查找/var目次下一切的标记链接文件。
find.-size+1000000c-print查找以后目次下年夜于1000000字节的文件
find/-name"con.file"-depth-print查找根目次下有没有"con.file",若无则在其子目次中查找
find.-typef-execls-l{};查找以后目次下是不是有一般文件,如有则实行ls-l
(4)xargs下令
在利用find下令的-exec选项处置婚配到的文件时,find下令将一切婚配到的文件一同传送给exec。不幸的是,有些体系对可以传送给exec的命令长度无限制,如许find下令运转几分钟以后就算呈现溢堕落误。毛病信息一般是“参数列太长”或“参数列溢出”。这就是xargs的用途地点,出格是与find下令一同利用,exec会倡议多个历程,而xargs会多个,只要一个
find./-perm-7-print|xargschmodo-w查找权限为7的文件并传送给chmod处置
3.grep先容(1)grep的一样平常格局为grep[options]基础正则表达式[文件]
字符串参数最好接纳是双引号括,一是以防被曲解为shell下令,二是能够用来查找多个单词构成的字符串
-c:只输入婚配行的记数
-i:不辨别巨细写(只合用于单个字符)
-h:查询多个文件时不显现文件名
-H:只显现文件名
-l:查询多文件时只输入包括婚配字符的文件名
-n:只显现婚配行及其行号
-s:不显现不存在或无婚配文本的毛病信息。
-v:显现不包括婚配文本的一切行。
(2)举例申明:
grep^[^210]myfile婚配myfile中以非2、1、0开首的行
grep"[5-8][6-9][0-3]"myfile婚配myfile中第一名为5|6|7|8,第二位6|7|8|9,第三位为0|1|2|3的三个字符的行
grep"4{2,4}"myfile婚配myfile中含有44,444或4444的行
grep"?"myfile婚配myfile中含有恣意字符的行
(3)grep下令类名
[[:upper:]]暗示[A-Z]
[[:alnum:]]暗示[0-9a-zA-Z]
[[:lower:]]暗示[a-z]
[[:space:]]暗示空格大概tab键
[[:digit:]]暗示[0-9]
[[:alpha:]]暗示[a-zA-Z]
如:grep"5[[:digit:]][[:digit:]]"myfile婚配myfile中含有5开首接下往两位都是数字的行。
4.awk先容
能够从文件或字符串中基于指定例则扫瞄和抽失信息,是一种自注释的酿成言语。
(1)awk下令行体例awk[-Ffiled-spearator]commandinput-files
awk剧本:一切awk下令拔出一个文件,并使awk步伐可实行,然后用awk下令注释器作为剧本的首行,以便经由过程键进剧本称号来挪用它。awk剧本是由各类操纵和形式构成。
形式局部决意举措语句什么时候触发及触发事务。(BEGIN,END)
举措对数据举行处置,放在{}内指明(print)
(2)分开符、域和纪录
awk实行时,其扫瞄域标志为$1,$2,...$n.这类***成为域标识。$0为一切域。
(3)举例申明:
awk{print$0}test.txt|teetest.out输入test.txt中一切行$0暗示一切域
awk-F:{print$1}test.txt|teetest.out同上。。只是分开符为":"
awkBEGIN{print"IPDate
"}{print$1" "$4}END{print"end-of-report"}test.txt
入手下手时打印“IPDate”停止时打印“end-of-report”两头打印主体信息,好比统共婚配三条信息,则输入以下:
IPDate
1first
2second
3third
end-of-report
(4)婚配操纵符~婚配,!~不婚配
cattest.txt|awk$0~/210.34.0.13/婚配test.txt中为210.34.0.13的行
awk$0!~/210.34.0.13test.txt婚配test.txt中不是210.34.0.13的行
awk{if($1=="210.34.0.13")print$0}test.txt婚配test.txt中第一个域为210.34.0.13的行。
5.sed先容sed不与初始化文件打交道,它操纵的只是一个拷贝,然后一切的修改假如没有重定向到一个文件,将输入到屏幕。
sed是一种很主要的文本过滤工具,利用一行下令大概利用管道与grep与awk相分离。是一种非交互性文本流编纂。
(1)挪用sed的三种体例
利用sed下令行格局为:sed[options]sed下令输出文件
利用sed剧本文件格局为:sed[options]-fsed剧本文件输出文件
sed剧本文件[options]输出文件
--不论是利用shell下令行体例或剧本文件体例,假如没有指定输出文件,sed从尺度输出中承受输出,通常为键盘或重定向了局。
(2)sed下令的options以下
-n:不打印
-c:下一下令是编纂下令
-f:假如正在挪用sed剧本文件
(3)sed在文件中查询文本的体例
--利用行号,能够是一个复杂的数字,或是一个行号的局限
--利用正则表达式
(4)读取文本的体例
xx为一行号
x,y暗示行号局限从x到y
/pattern/查询包括形式的行
/pattern/pattern/查询包括两个形式的行
pattern/,x在给定的行号上查询包括形式的行
x,/pattern/经由过程行号和形式查询婚配行
x,y!查询不包括指定行号x和y的行
(5)基础sed编纂下令
p打印婚配行 |
|