文件查找:
locate查找:
locate: 依赖于事先构建好的索引库,操作系统刚完成没有 系统自动实现(周期性任务); 手动更新数据库(updatedb);相当占用系统资源 工作特性: 查找速度快 模糊查找 非实时查找 可能只搜索用户具备读取和执行权限的目录 命令使用格式: locate [option] ...pattern.... -b:只匹配路径中的基名,不匹配路径中的 -c:统计符合条件的数量 -r:基于基本正则表达式 -i:忽略大小写
简单例子
find查找:
实时查找工具,通过遍历指定起始路径下文件系统层=层级结构完成文件查找 工作特性 查找速度略慢 精确查找 实时查找 find [option] [查找起始路径] [查找条件][处理动作] 查找路径:指定具体目标路径;默认为当前目录
查找条件:指定的查找标准,可以文件名、大小、类型、权限等标准进行;默认为找出指定路径下的所有文件 由选项和测试组成 测试的实现:根据文件名查找 -name "pattern"|-iname(不区分大小写) pattern:指的是globing风格表达式非正则表达式 -regex :基于正则表达式模式查找文件,匹配范围是整个路径,并非基名 根据文件的从属关系找到 -user username:查找属主指定用户的所有文件 -group group:查找属组为指定GID的所有文件 -uid UID:查找属主指定的UID的所有文件 -gid gid:查找指定属组的GID的所有文件 -nouser:没有属主的文件(某个文件的属主被删除,此文件所属和主以UID和Gid显示) -nogrpup
根据文件类型查找 -type TYPE: f: 普通文件 d: 目录文件 l: 符号链接文件 s:套接字文件 b: 块设备文件 c: 字符设备文件 p: 管道文件
组合条件: 与:-a默认组合条件 或:-o 非:-not或添加! 摩根定律:!(A -a B)=!A -o !B !(A -o B)=!A -a !B
根据文件大小查找 -size +|- 大小 单位 常用单位:K,M,G
根据时间戳查找: 以天为单位 -atime #:[#,#-1) +#: [#+1 ,∞] - #: [0,#) - mtime - ctime 以分钟为单位 -amin -mnin -cmint
根据权限查找 -perm mode:精确比配 /mode:任何一类(u,g,o)符合条件即可 -mode:每一类都符合条件,如果某一位上设置的为0表示不关注 举例: find - perm 755 会匹配权限模式恰好是755的文件 只要当任意人有写权限时, find - perm +222|/222 就会匹配 只有当每个人都有写权限时, find - perm - 222才会匹配 只有当其它人( other)有写权限时, find - perm - 002才会匹配
处理动作
-print -ls -delete :删除文件 -fls 路径:把查找到的文件的详细信息保存到指定文件中 -ok 命令 {} \;对找到的每个文件执行命令,执行前会与用户进行交互,询问是否操作 -exec 命令 {} \;对查找到的每个文件执行命令,但是不提醒 {}引用前面找到的文件 注意:find传递查找的文件路径到后面的命令时,先查找所有符合条件的命令,一次传给后面的命令但是有些命令不能执行过长的参数,此时命令执行会失败;另一个方式会解决 find |xargs 命令
find 命令练习
1、查找/var目录下最近一周内其内容修改过,同时属主不为root,也不是postfix的文件 2、查找当前系统上没有属主或属组,且最近一个周内曾被访问过的文件 3、查找/etc目录下大于1M且类型为普通文件的所有文件 4、查找/etc目录下所有用户都没有写权限的文件 5、查找/etc目录下至少有一类用户没有执行权限的文件 6、查找/etc/init.d目录下,所有用户都有执行权限,且其它用户有写权限的文件 7、查找/etc/下所有的.conf文件,但是不搜索/etc/sane.d文件
一、
二、
三、
四、
五、
六、
7、
[root@centos7 ~]# find /etc -path /etc/sane.d -a -prune -o -name "*.conf"
原创文章,作者:wangnannan,如若转载,请注明出处:http://www.178linux.com/30626
评论列表(1条)
find命令是笔试中常见的考点,同时find的处理动作也是很重要的,希望课后能多加练习,熟练掌握。