ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Linux四剑客

2022-07-26 09:34:42  阅读:179  来源: 互联网

标签:文件 匹配 exec Linux 剑客 查找 内容 mtime


一、find

作用:用来查找文件
格式:find dir -exec cmd {} ;

-name:按名字查找,可结合通配符使用

-iname:忽略大小写

-type:按文件类型
f:查找文件
d:查找目录

-mtime:文件修改时间
n表示文件更改时间距离为n天, -n表示文件更改时间距离在n天以内,+n表示文件更改时间距离在n天以前。
例如:
-mtime n 按照文件的更改时间来找文件,n为整数。
-mtime 0 表示文件修改时间距离当前为0天的文件,即距离当前时间不到1天(24小时)以内的文件。
-mtime 1 表示文件修改时间距离当前为1天的文件,即距离当前时间1天(24小时-48小时)的文件。
-mtime+1 表示文件修改时间为大于1天的文件,即距离当前时间2天(48小时)之外的文件
-mtime -1 表示文件修改时间为小于1天的文件,即距离当前时间1天(24小时)之内的文件
为什么-mtime+1 表示文件修改时间为大于1天的文件,即距离当前时间48小时之外的文件,而不是24小时之外的呢?
因为n值只能是整数,即比1大的最近的整数是2,所有-mtime+1不是比当前时间大于1天(24小时),而是比当前时间大于2天(48小时)。


-size:查看文件大小
+10k:大于10k
-10k:小于10k
+30M:大于30M



-exec:匹配所有搜索的结果
一个-exec只能执行一个命令,而且必须在命令后面加上终结符,终结符有两个,";"和"+",其中";"表示一个-exec的cmd命令结束,而"+"表示一次性执行完cmd命令。
* 为什么必须有终结符呢,因为一个find后面可以有多个-exec cmd,所以必须要有终结符分割他们。
* 为什么要加"\",因为";"是shell命令的分隔符,如果只有";",那么这条命令就会被shell截断。因为shell发现了末尾的";",就把前面的当成了一个命令,但是,因为没有终结符,所以无法执行,所以要加一个转义符"\",让shell知道这个";"有特殊含义。

因为单行命令-exec参数中无法使用多个命令,可以使用脚本的形式来执行多个命令
-exec ./test.sh {};
{}也称占位符,代表前面find查找出来的文件名



-ok:和-exec的作用相同,只不过是一种更为安全的模式来执行该参数所给出的shell命令,执行每一个命令之前,都会给出提示,让用户确定是否继续执行

-perm:按文件权限来查找

*:通配符代表所有
.:代表当前目录


例1:根据文件类型查找

例2:根据文件名查找

例3:根据mtime文件的修改时间查找10天内的文件

例4:根据mtime文件的修改时间查找30天前的文件

例5:根据mtime文件的修改时间查找当天的文件

例6:结合exec执行删除文件
注:将前面执行的结果作为exec后面的输入

例7:结合exec执行拷贝文件

例8:查找30天前以.txt结尾且大于50k的文件

例9:将某些文件的权限设置为644

例10:将某些目录的权限设置为755

例11:查找当天以.txt结尾的文件并列出详细信息

二、grep

作用:用来过滤文件中的内容
格式:grep [选项] "模式" [文件]
支持扩展正则:egrep

-E :开启扩展(Extend)的正则表达式。

-i :忽略大小写(ignore case)。

-v :反过来(invert),只打印没有匹配的,而匹配的反而不打印。

-n :显示行号

-w :被匹配的文本只能是单词,而不能是单词中的某一部分,如文本中有liker,而我搜寻的只是like,就可以使用-w选项来避免匹配liker

-c :显示总共有多少行被匹配到了,而不是显示被匹配到的内容,注意如果同时使用-cv选项是显示有多少行没有被匹配到。

-o :只显示被模式匹配到的字符串。

--color :将匹配到的内容以颜色高亮显示。

-A  n:显示匹配到的字符串所在的行及其后n行,after

-B  n:显示匹配到的字符串所在的行及其前n行,before

-C  n:显示匹配到的字符串所在的行及其前后各n行,context

例1:过滤/etc/passwd文件中的root用户

例2:过滤nginx配置文件,并且去掉#号和空行

例3:过滤一个文件中的ip地址
方式一:

方式二:

例4:过滤一个服务占用的进程数
方式一:

方式二:
这是因为正则的特性,它会依次匹配中括号里的内容,并巧妙的过滤掉grep进程本身

三、sed

作用:用来查找或修改文件中的内容
格式:sed [选项] "s#1#2#g" [文件]

-s:替换
-p:显示print
-d:删除delete
-c:替代这行的内容
-a:追加,向指定的行或每一行追加内容(行后面)>>
-i:插入,向指定的行或每一行插入内容(行前面)
-n:('2p'、'1,4p'、'/^test/p'、'/19:00*/,/20:00*/p'、'3,$p')指定查找范围
-e:有多个sed命令的时候使用
-r:在脚本中使用扩展正则表达式
!:取反




例1:查找某一行内容

例2:查找某一行到某一行内容

例3:查找某一时间到某一时间的日志

例3:查找某一行到最后一行内容

例3:过滤ip地址

四、awk

内置变量:
NR==1:取出某一行
NR>=1&&NR<=5:取出1到5行,指范围
/test/
/10:00/,/11:00/

例1:取出passwd文件中第5行内容

例2:取出passwd文件中第1到5行内容

例3:取出passwd文件中包含spool字眼的内容

例4:取出passwd文件中包含root和ntp的内容

-F:指定分隔符,指定每一列结束标记(默认空格,连续空格,tab制表符)
$数字:取出某一列
$0:某一整行
NF:每行有多少个字段(列),$NF表示最后一列
~:表示包含
!~:表示不包含

例1:取出第5列内容

例2:取出第5列和第9列内容

例3:截取ip地址

例4:取出第3列包含数字1的行

例5:显示时间范围内的日志信息

标签:文件,匹配,exec,Linux,剑客,查找,内容,mtime
来源: https://www.cnblogs.com/msfyang/p/15876542.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有