透明 发表于 2015-1-14 21:18:32

Linux教程之Centos 查找目次下一切文件中是不是包括指定字符串

欢迎大家来到仓酷云论坛!linux下查找目次下的一切文件中是不是包括指定字符串
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,....
[]:只婚配[]内字符。能够是一个单字符,也能够是字符序列,用","将内里要婚配的分歧字符串分隔。也能够利用-来暗示[]内字符序列的局限,如暗示
:只用来屏障一个元字符的特别寄义。如*,,",|,+,^,.等
.:(点)只婚配恣意单字符。
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开头的一切字符或文件
或:假定要婚配恣意一个数字
:恣意小写字母
:恣意巨细写字母
:婚配巨细写S
{3}.{3}.{3}.{3}:婚配IP地点{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查找文件长度为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基础正则表达式[文件]
字符串参数最好接纳是双引号括,一是以防被曲解为shell下令,二是能够用来查找多个单词构成的字符串
-c:只输入婚配行的记数
-i:不辨别巨细写(只合用于单个字符)
-h:查询多个文件时不显现文件名
-H:只显现文件名
-l:查询多文件时只输入包括婚配字符的文件名
-n:只显现婚配行及其行号
-s:不显现不存在或无婚配文本的毛病信息。
-v:显现不包括婚配文本的一切行。
(2)举例申明:
grep^[^210]myfile婚配myfile中以非2、1、0开首的行
grep""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:]]暗示
[[:alnum:]]暗示
[[:lower:]]暗示
[[:space:]]暗示空格大概tab键
[[:digit:]]暗示
[[:alpha:]]暗示
如: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下令行格局为:sedsed下令输出文件
利用sed剧本文件格局为:sed-fsed剧本文件输出文件
sed剧本文件输出文件
--不论是利用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打印婚配行
d删除婚配行
=显现文件行号
a在定位行号后附加新文本信息
i在定位行号后拔出新文本信息
c用新文本交换定位文本
s利用交换形式交换响应形式
r从另外一个文件中读文件
w写文本到一个文件
q第一个形式婚配完成后推出或当即加入
l显现与八克制ASCII代码等价的把持字符
{}在定位行实行的下令组
n从另外一个文件中读文本下一行,并附加鄙人一行
g将形式2粘贴到/patternn/
y传送字符
(6)举例申明:
sed-n2ptest.txt打印第二行的信息(注重:-n是不打印不婚配的信息,若没加-n,则打印文件的一切信息而不是婚配信息)
sed-n1,4ptest.txt打印第一行到第四行的信息
sed-n/los/ptest.txt形式婚配los,并打印出来
sed-n2,/los/ptest.txt从第二行入手下手。。晓得婚配第一个los
sed-n/^$/ptest.txt婚配空行
sed-n-e/^$/p-e/^$/=test.txt打印空行及行号
sed-n/good/amorningtest.txt在婚配到的good前面附加morning
sed-n/good/imorningtest.txt在婚配到的good后面拔出morning
sed-n/good/cmorningtest.txt将婚配到的good交换成morning
sed1,2dtest.txt删除第1和2行
seds/good/goodmorning/gtest.txt婚配good并交换成goodmorning
sends/good/&hello/ptest.txt婚配到good就在厥后面加上hello
sends/good/hello&/ptest.txt婚配到good就在其后面加上hello
6.兼并与支解(sort,uniq,join,cut,paste,split)(1)sot下令
sortfiles很多分歧的域按分歧的列按次排序
-c测试文件是不是已排序
-m兼并两个排叙文件
-u删除一切一样行
-o存储sort了局的输入文件名
-t域分开符,用非空格或tab入手下手排序
+n:n为列号,利用此列号入手下手排序
-n指定排序是域上的数字分类项
-r对照求逆
sort-ctest.txt测试文件是不是分类过
sort-utest.txt排序并兼并一样的行
sort-rtest.txt以相反的按次分列
sort-t"/"+2test.txt以"/"分开,第二个域入手下手分类
(2)uniq下令
uniqfiles从一个文本文件中往除或克制反复行
-u只显现不反复行
-d只显现有反复数据行,每种反复行只显现个中一行
-c打印每反复行呈现次数
-f:n为数字,前n个域被疏忽
uniq-f2test.txt疏忽前2个域
(3)join下令
joinfile1file2用来未来自两个分类文本文件的行连在一同
-an,n为一数字,用于毗连时从文件n中显现不婚配行
-onm,毗连域,n为文件号,m为域号
-jnm,n为文件号,m为域号,利用其他域作毗连域
-t,域分开符。用来设置非空格或tab键的域分开符。
(4)split下令
split-output_file_sizeintput_filenameoutput_filename
用来将年夜文件支解成小文件。
-bn,每一个支解文件的巨细n
-Cn,每一个支解文件一行最多n字节
-ln,每一个支解文件的行数
-n,同-ln
split-10test.txt将test.txt支解成10行的小文件
(5)cut下令
cut-cn1-n2filename显现每行从开首算起n1到n2的笔墨。
cut-c3-5test.txt显现test.txt中每行从第3到第5个字符如果您觉得本篇CentOSLinux教程讲得好,请记得点击右边漂浮的分享程序,把好文章分享给你的小伙伴们!

活着的死人 发表于 2015-1-17 10:38:46

众所周知,目前windows操作系统是主流,在以后相当长的时间内不会有太大的改变,其方便友好的图形界面吸引了众多的用户。

小妖女 发表于 2015-1-26 13:04:27

学习Linux应具备的。[书籍+网络资源]

飘飘悠悠 发表于 2015-2-4 20:46:24

期间我阅读了不少关于Linux的相关资料,其中也不乏一些有趣的小故事,这既丰富了我的课余生活,也让我加深了对一些术语的理解,比玩游戏强多了。?

admin 发表于 2015-2-10 10:17:03

未来的学习之路将是以指数增加的方式增长的。从网管员来说,命令行实际上就是规则,它总是有效的,同时也是灵活的。

柔情似水 发表于 2015-3-1 11:01:06

查阅经典工具书和Howto,特别是Howto是全球数以万计的Linux、Unix的经验总结非常有参考价值通常40%的问题同样可以解决。

变相怪杰 发表于 2015-3-10 18:42:18

虽然大家都比较喜欢漂亮的mm,但是在学 linux 的过程中,还是要多和“男人”接触一下:P 遇到问题的时候,出来看说和上网查之外,就是要多用 linux 下的 man 命令找找帮助。

小女巫 发表于 2015-3-17 10:13:50

下面看看一个让人无法回答的问题:“救命各位高手,向你们请教一些问题:如何在Linux下配制HTTP、FTP、Samba、DNS、DHCP、Sendmail服务器,谢谢”这样的问题。

蒙在股里 发表于 2015-3-24 08:09:20

选择交流平台,如QQ群,网站论坛等。
页: [1]
查看完整版本: Linux教程之Centos 查找目次下一切文件中是不是包括指定字符串