大纲
一、前言
二、locate
三、find
一、前言
在windows下,我们查找文件,可以在搜索里面,输入文件名或通配符就可以进行搜索。在Linux下,要查找文件可以找locate 或 find命令进行查找,而且这些命令还有其他特别的功能。
二、locate
特点:此命令是非实时查找命令,依赖于索引,因此搜索速度快。但是索引的构建是当系统空闲时由系统自动进行,是个每天任务。因此,你搜索的文件若是索引构建后有变化的,那样就有问题。构建索引可以手动进行,命令:updatedb(有点类似make whatis),但是构建索引需要时间,长短由系统情况而定。
举例:
查找文件ubuntu
发现,只要在路径名中带有关键字,或基名带关键字的,都可以被搜索出来,因此,此命令用的不多。
三、find
特点:实时遍历各个文件查找,速度慢于locate.属于精确查找。
命令:find [option]… [查找路径] [查找条件] [处理动作]
查找路径: 默认当前目录
查找条件:
-name 文件名称:支持globbing字符 -user USERNAME: 根据文件的属主查找 -group GRPNAME:根据文件的属组查找 -uid UID:根据UID 查找 -gid GID:根据GID查找 -nouser :查找没有属主的文件 -nogroup :查找没有属组的文
举例子说明下:
按文件名查找,默认是本路径下:
跟locate不一样,只会在文件名那里才会出现要搜索的文件
其他的类似。
下面介绍下没有属主和没有属组的文件:如果把一个用户删除,在属主、属组的位置将被数字代替:
因此,查找的时候使用-nouser -nogroup 可以查找到相应的文件
组合条件查找
与:-a,同时满足条件(可省略) 或:-o,满足一个即可 非:-not / !,条件取反
或者
注意,括号需要转义 \( \)
-type 根据文件类型查找
f: 普通文件 d: 目录文件 l: 符号链接 b: 块设备 c: 字符设备 s: 套接字文件 p: 命名管道 比如:查找 /dev 下的字符设备:
-size 根据文件大小查找(常用单位 K M G)
= # :如=2 ,显示范围x 1 <x<=2 + # :如+2 ,显示范围x >2 - # :如-2 ,显示范围x <=1
举例:查找3k-4K(含)以内的文件
以时间为单位查找(天为单位)
-atime +# :如+2 3天以前 =# :如 2 2-3天 -#:如-2 2天之内 -mtime -ctime
举例
查找修改时间是11天前的文件
根据权限查找
-perm [+/-] MODE + 任何一类用户的权限只要能包含对其指定的任何一位权限即可 - 每类用户指定的检查权限都匹配
举例
查找其他用户有执行权限的文件
查找所有用户都没有写权限的文件,因为+的权限是或,前面加个非,就变成了与
执行动作
看到了我上面的例子,有些在后面加了-ls,这就是执行动作的一种
-print: 默认处理动作,显示 -ls :类似于ls -l -exec COMMOND {}\; :表示对查找的内容进行处理的动作,{}表示查找到的内容的引用
当然我们也可以将查找到的文件直接删除,该权限等等。但是要注意的是,如果直接删除是没有命令交互提示的。
在使用find命令的-exec选项处理匹配到的文件时, find命令将所有匹配到的文件一起传递给exec执行。但有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出现 溢出错误。错误信息通常是“参数列太长”或“参数列溢出”。这就是xargs命令的用处所在,特别是与find命令一起使用。
find | xargs COMMAND
以上是一些文件查找的用法和体会,在今后的学习中,还会继续慢慢体会。
原创文章,作者:麦鲸,如若转载,请注明出处:http://www.178linux.com/3998
评论列表(2条)
标签其实应该认真写,增加seo率才能提高贡献率
@stanley:好的,一定注意。谢谢老师~!