2023年7月26日发(作者:)
linux查询⽬录下包含关键字的所有⽂件
查找⽬录下的所有⽂件中是否含有某个字符串
find .|xargs grep -ri "IBM"
查找⽬录下的所有⽂件中是否含有某个字符串,并且只打印出⽂件名
find .|xargs grep -ri "IBM" -l
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结尾的所有字符或⽂件
[]或[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组成的字符串;.
:匹配点(注意这⾥点是特殊的字符,所以要⽤""来屏蔽其含义)
介绍
(1)查找具有某些特征⽂件的命令,可遍历当前⽬录甚⾄于整个⽂件系统来查看某些⽂件或⽬录,其遍历⼤的⽂件系统时⼀般放在后台执⾏。
(2)find命令的⼀般形式
find pathname -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选项相似。
-size n[c]查找⽂件长度为n块的⽂件,带有c时表⽰⽂件长度以字节计。
-nogroup
查找⽆有效所属组的⽂件,即该⽂件所属的组在/etc/groups中不存在
-newer file1 !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 . -perm 755 -print
查找当前⽬录下权限为755的⽂件,并输出
find `pwd` -user root -print
查找当前⽬录下属主为root的⽂件,并输出 find ./ -group sunwill -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 -type d -print
查找/var⽬录下所有⽬录
find /var -type l -print
查找/var⽬录下所有的符号链接⽂件。
find . -size +1000000c -print
查找当前⽬录下⼤于1000000字节的⽂件
find / -name "" -depth -print
查找根⽬录下有⽆"",若⽆则在其⼦⽬录中查找
find . -type f -exec ls -l {} ;
查找当前⽬录下是否有普通⽂件,若有则执⾏ls -l
(4)xargs命令
在
使⽤find命令的-exec选项处理匹配到的⽂件时,find命令将所有匹配到的⽂件⼀起传递给exec。不幸的是,有些系统对能够传递给exec的命
令长度有限制,这样find命令运⾏⼏分钟之后就算出现溢出错误。错误信息通常是“参数列太长”或“参数列溢出”。这就是xargs的⽤处所在,特别是与 find命令⼀起使⽤,exec会发起多个进程,⽽xargs会多个,只有⼀个
find ./ -perm -7 -print | xargs chmod o-w
查找权限为7的⽂件并传递给chmod处理
介绍 (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开头接下去两位都是数字的⾏。
介绍
可以从⽂件或字符串中基于指定规则浏览和抽取信息,是⼀种⾃解释的变成语⾔。
(1)awk命令⾏⽅式 awk [-F filed-spearator] 'command' input-files
awk脚本:所有awk命令插⼊⼀个⽂件,并使awk程序可执⾏,然后⽤awk命令解释器作为脚本的⾸⾏,以便通过键⼊脚本名称来调⽤它。awk脚本是由各种操作和模式组成。
模式部分决定动作语句何时触发及触发事件。(BEGIN,END)
动作对数据进⾏处理,放在{}内指明(print)
(2)分隔符、域和记录
awk执⾏时,其浏览域标记为$1,$2,...$n.这种⽅法成为域标识。$0为所有域。
(3)举例说明:
awk '{print $0}' |tee
输出中所有⾏$0表⽰所有域
awk -F : '{print $1} |tee '
同上。。只是分隔符为":"
awk 'BEGIN {print "IPDaten"}{print $1 "t" $4} END{print "end-of-report"}'
开始时打印“IPDate”结束时打印“end-of-report”中间打印主体信息,⽐如总共匹配三条信息,则输出如下:
IPDate
1 first
2 second
3 third
end-of-report
(4)匹配操作符 ~
匹配,!~
不匹配
cat |awk '$0~/210.34.0.13/'
匹配中为210.34.0.13的⾏
awk '$0!~/210.34.0.13'
匹配中不是210.34.0.13的⾏
awk '{if($1=="210.34.0.13") print $0}'
匹配 中第⼀个域为210.34.0.13的⾏。介绍 sed不与初始化⽂件打交道,它操作的只是⼀个拷贝,然后所有的改动如果没有重定向到⼀个⽂件,将输出到屏幕。
sed是⼀种很重要的⽂本过滤⼯具,使⽤⼀⾏命令或者使⽤管道与grep与awk相结合。是⼀种⾮交互性⽂本流编辑。
(1)调⽤sed的三种⽅式
使⽤sed命令⾏格式为:sed [options] sed命令
输⼊⽂件
使⽤sed脚本⽂件格式为:sed[options] -f sed脚本⽂件
输⼊⽂件
sed脚本⽂件[options]
输⼊⽂件
--不管是使⽤shell命令⾏⽅式或脚本⽂件⽅式,如果没有指定输⼊⽂件,sed从标准输⼊中接受输⼊,⼀般是键盘或重定向结果。
(2)sed
命令的options如下 -n:不打印
-c:下⼀命令是编辑命令
-f:如果正在调⽤sed脚本⽂件
(3)sed在⽂件中查询⽂本的⽅式
--使⽤⾏号,可以是⼀个简单的数字,或是⼀个⾏号的范围
--使⽤正则表达式
(4)读取⽂本的⽅式
x x为⼀⾏号
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粘贴到/pattern n/
y
传送字符
(6)举例说明:
sed -n '2p'
打印第⼆⾏的信息(注意:-n是不打印不匹配的信息,若没加-n,则打印⽂件的所有信息⽽不是匹配信息)
sed -n '1,4p'
打印第⼀⾏到第四⾏的信息
sed -n '/los/p' 模式匹配los,并打印出来
sed -n '2,/los/p'
从第⼆⾏开始。。知道匹配第⼀个los
sed -n '/^$/p'
匹配空⾏
sed -n -e '/^$/p' -e '/^$/='
打印空⾏及⾏号
sed -n '/good/amorning'
在匹配到的good后⾯附加morning
sed -n '/good/imorning'
在匹配到的good前⾯插⼊morning
sed -n '/good/cmorning'
将匹配到的good替换成morning
sed '1,2d'
删除第1和2⾏
sed 's/good/good morning/g'
匹配good并替换成goodmorning
send 's/good/& hello /p'
匹配到good就在其后⾯加上hello
send 's/good/ hello &/p'
匹配到good就在其前⾯加上hello
6.合并与分割(sort,uniq,join,cut,paste,split) (1)sot命令
sort [options] files
许多不同的域按不同的列顺序排序
-c
测试⽂件是否已经排序
-m
合并两个排序⽂件
-u
删除所有同样⾏
-o
存储sort结果的输出⽂件名
-t
域分隔符,⽤⾮空格或tab开始排序
+n
:n
为列号,使⽤此列号开始排序
-n
指定排序是域上的数字分类项
-r
⽐较求逆
sort -c
测试⽂件是否分类过
sort -u
排序并合并⼀样的⾏
sort -r
以相反的顺序排列
sort -t "/" +2
以"/"分隔,第⼆个域开始分类
(2)uniq命令
uniq [options ] files
从⼀个⽂本⽂件中去除或禁⽌重复⾏
-u
只显⽰不重复⾏
-d
只显⽰有重复数据⾏,每种重复⾏只显⽰其中⼀⾏
-c
打印每⼀重复⾏出现次数
-f
:n为数字,前n个域被忽略
uniq -f 2
忽略前2个域
(3)join
命令
join [options] file1 file2
⽤来将来⾃两个分类⽂本⽂件的⾏连在⼀起
-an,n为⼀数字,⽤于连接时从⽂件n中显⽰不匹配⾏ -onm
,连接域,n为⽂件号,m为域号
-jnm,n为⽂件号,m为域号,使⽤其他域作连接域
-t
,域分隔符。⽤来设置⾮空格或tab键的域分隔符。
(4)split命令
split -output_file_size intput_filename output_filename
⽤来将⼤⽂件分割成⼩⽂件。
-b n,每个分割⽂件的⼤⼩n
-C n,每个分割⽂件⼀⾏最多n字节
-l n,每个分割⽂件的⾏数
-n,同-l n
split -10
将分割成10⾏的⼩⽂件
(5)cut
命令
cut -c n1-n2 filename
显⽰每⾏从开头算起 n1
到 n2
的⽂字。
cut -c 3-5 显⽰中每⾏从第3到第5个字符
发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1690362026a337916.html
评论列表(0条)