一、常用的文本查找命令
grep、egrep命令
grep:文本搜索工具,根据用户指定的文本模式对目标文件进行逐行搜索,先是能够被模式匹配到的行。后面跟正则表达式,让grep工具相当强大。-E之后还支持扩展的正则表达式。
# grep [options] 'PATTERN' file ...
--color=auto:高亮显示被匹配的关键字
-v:反向
-o:仅显示被模式匹配的字串,而非整行
- i:不区分大小写
-E:支持扩展的正则表达式
-A+n:仅显示被匹配到的行和其上n行
-B+n:仅显示被匹配到的行和其下n行
-C+n:仅显示被匹配到的行和其上、下n行
# egrep [options] 'PATTERN' file ...
选项和grep相同,egrep=grep -E ,这里不再继续说明。
locate命令
locate:其实是“find -name”的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库(/var/lib/locatedb),这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。
find命令
find:实时查找,精确匹配,速度略慢
#find [options] [查找路径] [查找条件] [处理动作]
默认:查找路径:当前目录
查找条件:查找指定路径下的所有文件
处理动作:显示在标准输出上
二、find命令详解
(一)、查找条件
-name "文件名称":支持文件名通配
-iname "文件名称":支持文件名通配,不区分大小写
-user "用户名":根据属主查找
-group "组名":根据属组查找
-uid "UID":根据UID查找
-gid "GID":根据GID查找
-nouser:查找没有属主的文件
-nogroup:查找没有属组的文件
◆当一个用户被删除,那么该用户的文件就会变成没有属主或属组的文件
(二)、组合条件
-a:和与相同,同时满足
-o:与或相同,满足其一皆可
-not、!:与非相同,取反
-type:根据文件类型查找
f:普通文件
d:目录
b:块设备
c:字符设备
l:符号链接文件
p:命令管道工具
s:套接字文件
根据文件大小查找
-size [+|-]单位
+2M:大于2M的
-2M:小于1M的
2M:1.1~2M的
常用单位:k、M、G
例:大于2M的
# find -size +2M
根据时间戳查找
以天为单位(tim
-atime [+|-]n:被访问的n天
-mtime [+|-]n:被修改的n天
-ctime [+|-]n:被创建的n天
+2:大于3天的
- 2:小于2天的
2:2天到3天的
以分钟为单位(min)
-amin [+|-]n:被访问的n分钟
-mmin [+|-]n:被修改的n分钟
-cmin [+|-]n:被创建的n分钟
+2:大于3分钟
-2:小于2分钟
2:2分钟到3分钟
根据权限查找
-perm [+|-]权限
MODE:精确匹配
+MODE:任何一类用户的任何一位权限匹配,常用语查找某类用户的特点权限是否存在
-MODE:每类用户的任何一位都匹配,每类用户的指定要检查的权限都匹配
(三)、处理动作
-print:打印在标准输出上
-ls:以长格式输出各文件信息
-exec COMMAND\:对查找的文件执行制定的命令
-ok COMMAND\:交互式的-exec
find把查找到的文件一次性的传递给-exec所指定的命令
如果查到到的是多个文件要加{},{}是占位符,表示接受前面find查找的文件,并对文件依次执行动作
格式: find -exec {} \;
例:# find -iname *.sh -exec chmod a-x {} \;
xargs命令
find|xargs COMMAND 一次性接受一批文件,通过管道直接修改
例:# find -iname text.sh | xargs chmod a+x
转载于:https://blog.51cto.com/zrer90/1414380