locate

索引构建过程需要遍历整个根文件系统,极消耗资源,所以系统会在较为空闲时生成或更新/var/lib/mlocate/mlocate.db,系统会自动生成该文件,但是新装系统要等一段时间才会生成该文件
手动生成或者更新数据库——updatedb
工作特点:
• 查找速度快
• 模糊查找
• 非实时查找
• 搜索的是文件的全路径,不仅仅是文件名
• 可能只搜索用户具备读取和执行权限的目录

有用的选项
-i 不区分大小写的搜索
-n N 只列举前N个匹配项目
-r 使用基本正则表达式

find

find是实时查找工具,通过遍历指定路径完成文件查找

1.工作特点:

  1. 查找速度略慢
  2. 精确查找
  3. 实时查找
  4. 只搜索用户具备读取执行权限的目录

这些特点都是相对于另一种基于数据库的查找工具locate而言的,而find是直接从磁盘搜索的

2.语法

find [option]…[查找路径][查找条件][处理动作]

  • 查找路径:指定具体目标路径;默认为当前目录
  • 查找条件:指定的查找标准,可以文件名、大小、类型、权限等标准进行;默认为找出指定路径下的所有文件
  • 处理动作:对符合条件的文件做操作;默认输出至屏幕

options

  • -maxdepth level 最大搜索目录深度,指定目录下的文件为第1级
  • -mindepth level 最小搜索目录深度
  • -depth :搜索到目录时,先处理目录中的文件(子目录),再处理目录本身。对于"-delete"这个action,它隐含"-depth"选项。

查找条件

根据文件名和inode查找

-name:根据文件名(不能dirname)来搜索,支持通配符
-path:可以以dirname+basename的方式搜索
-inum:根据inode号来搜索

查找/etc/下,除/etc/sane.d目录的其它所有.conf后缀的文件
find /etc -path ‘/etc/sane.d’ -a –prune -o -name “*.conf”

根据文件类型查找

-type TYPE

  • f:普通文件
  • d:目录文件
  • l:符号链接文件
  • s:套接字文件
  • b:块设备文件
  • c:字符设备文件
  • p:管道文件
  • -empty:查找空文件或目录
    示例:find /app -type d -empty
根据文件属主属组查找

-user:查找属主为指定用户的文件
-group:查找属组为指定组的文件
-uid UserID:查找属主为指定的UID号的文件
-gid GroupID:查找属组为指定的GID号的文件
-nouser:查找没有属主的文件
-nogroup:查找没有属组的文件

根据文件大小查找

-size [+|-]#unit
unit为大小单位,常用单位有:c(byte),k,M,G

  • #UNIT: (#-1, #]
     如:6k 表示(5k,6k]
  • -#UNIT:[0,#-1]
     如:-6k 表示[0,5k]
  • +#UNIT:(#,∞)
     如:+6k 表示(6k,∞)
根据时间戳查找

用法和以文件大小查找类似
以天为单位
-atime
-mtime
-ctime
以分钟为单位
-amin
-mmin
-cmin

根据权限查找

-perm [无权限|/|-] mode(数字表示法)

  • mode:精确权限匹配,指定的权限不能超过也不能少
  • /mode:所有者,所属组,其他人任何一类对象指定的rwx权限中有任何以为以为匹配即可
  • -mode:指定的权限必须有
    权限中0表示不关心

处理动作

  • -print:默认的处理动作,显示至屏幕
  • -print0:每个结果间以空格为分割符
  • -printf:选项有很多修饰符功能,对于处理路径方面的修饰符有%f、%p、%P
    %f是获取basename(去除所有路径前缀)
    %p是获取路径自身,一般用不上
    %P是获取除了find搜索路径的剩余部分。
  • -ls:类似于对查找到的文件执行“ls -l”命令
  • -delete:删除查找到的文件,"-delete"动作隐含"-depth"。
  • -fls file:查找到的所有文件的长格式信息保存至指定文件中
  • -ok COMMAND {} \:对查找到的每个文件执行由COMMAND指定的命令,对于每个文件执行命令之前,都会交互式要求用户确认
  • -exec COMMAND {} \:对查找到的每个文件执行由COMMAND指定的命令
  • {}: 用于引用查找到的文件名称自身
    find命令默认接的命令是-print,它默认以\n将找到的文件分隔。可以使用-print0来使用\0分隔,这样就不会分行了。

操作符

  • ( expr ):优先级最高。为防止括号被shell解释(进入子shell),所以需要转义,即(…)
  • ! expr=-not expr:对expr的true和false结果取反。同样需要使用引号包围
  • expr1 expr2 = expr1 -and expr2 = expr1 -a expr2:首先要求expr1为true,然后expr2以expr1搜索的结果为基础继续检测,然后再返回。检测值为true的文件。因为expr2是以expr1结果为基础的,所以如果expr1返回false,则expr2直接被忽略而不会进行任何操作,通俗来说就是-a两边的条件必须同时满足
  • expr1 -o expr2=expr1 -or expr2:只有expr1为假时才评估expr2。通俗来说-o两边的条件满足一个就可以
  • expr1 , expr2 :逗号操作符表示列表的意思,expr1和expr2都会被评估,但expr1的true或false是被无视的,只有expr2的结果才是最终状态值。

3.小技巧:从结果中排除目录自身

find搜索目录时,总是会将搜索路径自身也包含到搜索结果中。想办法排除它是必须的。
排除的方法是,加上一个-path选项并取反,-path的参数和find的搜索路径参数必须一致。

[root@wyh ~]# find /data/haha
/data/haha
/data/haha/a.txt
/data/haha/b.txt
/data/haha/c.txt
[root@wyh ~]# find /data/haha ! -path /data/haha
/data/haha/a.txt
/data/haha/b.txt
/data/haha/c.txt

4.xargs简述

find传递查找到的文件至后面指定的命令时,查找到所有符合条件的文件一次性传递给后面的命令,所以有时候需要xargs
xargs:有些命令不接受stdin(比如ls),或者想把stdin作为下个命令的参数。xargs可以将管道传输过来的stdin处理后的传递到正确的位置上。

[root@wyh data]# find /data -maxdepth 1 -name "*.conf"
/data/m.conf
/data/n.conf
/data/mnrp.conf
/data/a.conf                          #直接find的结果,查找到conf结尾的文件
/data/.conf
/data/xx.conf
/data/lala.conf
[root@wyh data]# find /data -maxdepth 1 -name "*.conf" | ls
a  a.conf  a.d  b.txt  ccc.d  c.d  haha  lala.conf  m.conf  mnrp.conf  n.conf  xx.conf                 #管道后给ls,没有对find的结果ls
[root@wyh data]# find /data -maxdepth 1 -name "*.conf" | xargs ls
/data/a.conf  /data/.conf  /data/lala.conf  /data/m.conf  /data/mnrp.conf  /data/n.conf  /data/xx.conf    #加上xargs后,ls执行了find的结果

xarg还可以实现批量创建用户,xargs有个选项-n#,可以将前一个命令的结果#个位一行,分行显示

[root@wyh data]# echo {1,2,3} | xargs -n1 useradd
useradd: invalid user name '1'
useradd: invalid user name '2'
useradd: invalid user name '3'
[root@wyh data]# echo {a,b,c} | xargs -n1 useradd
[root@wyh data]# tail -3 /etc/passwd
a:x:1001:1001::/home/a:/bin/bash
b:x:1002:1002::/home/b:/bin/bash
c:x:1003:1003::/home/c:/bin/bash

文件查找工具locatfind相关推荐

  1. Linux文件查找工具之find “大宝剑”--转载

    原文地址:http://xinzong.blog.51cto.com/10018904/1749465 一.文件查找工具常用软件 locate: locate命令其实是find -name的另一种写法 ...

  2. Duplicate Manager Pro for Mac(重复文件查找工具)破解版安装

    1.Duplicate Manager Pro 简介 Duplicate Manager Pro 是 macOS 系统上一款重复文件查找工具,可以帮你在 Mac 电脑上查找出磁盘上面的重复文件,然后让 ...

  3. Duplicate File Finder for Mac(重复文件查找工具)

    Duplicate File Finder for Mac 破解版就能够帮助您将这些占用您空间的重复软件和文件删除了,Duplicate File Finder Mac版具有智能"拖放&qu ...

  4. Linux文件查找工具之find “大宝剑”

    一.文件查找工具常用软件 locate: locate命令其实是find -name的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/locatedb,这 ...

  5. Linux文件查找工具的探索

    经过 Linux 系统不断探索,不断发展到现代文明,我们都必须坚信:一个典型的 Linux 系统是包含很多文件的,即是由文件组成的!那么新的问题就会涌现到我们的脑海中--"我们如何查找呢?& ...

  6. linux c 文件查找字符串,Linux基础之文件查找工具:locate、find

    引言: 在学习Linux中的文件查找时,突然联想到平时用的搜索引擎,在生活中我们想获取什么信息,在google等搜索引擎里面敲入就能列出符合我们条件的相关信息.如果我们不满意搜索结果可以进一步精确我们 ...

  7. linux grep 多个文件,Linux多文件查找工具之grep

    1. 简介 grep全称Global Regular Expression Print,全局正则表达式打印. 在这里面提到了三个关键词,我们逐个进行分析,这样有助于我们理解 grep这个命令的作用,1 ...

  8. Linux 命令之 locate -- 文件查找工具(查找文件/搜索文件)

    文章目录 一.命令介绍 二.相关文件说明 配置文件 updatedb.conf 三.更新数据库 四.常用选项 五.命令示例 搜索文件名以指定字符串开头的文件 查找名称中含有指定字符串的文件 使用正则表 ...

  9. 【linux基础】10、文件查找工具

    目录 locate find -name,-iname --regex -user,-group,-uid,gid,-nouser,-nogroup -type -size  -+      #-1 ...

  10. everything 全盘文件查找工具及正则表达式的使用

    首先需要开启 everything 工具在(字符串)查找时,对正则表达式功能的支持: [菜单栏]⇒ [Search]⇒ 勾选[Enable Regex] ctrl + i:字符大小写敏感/不敏感 1. ...

最新文章

  1. springmvc配置DispatcherServlet拦截url注意事项
  2. 谷歌15个人工智能开源免费项目!开发者:懂了
  3. d类功放芯片_【学术论文】应用于无滤波级D类音频功放的新型死区时间控制系统...
  4. php gd 缩略图,[PHP GD库]①0--缩略图封装
  5. CVE-2012-1876调试要点
  6. 【数据结构】——归并排序
  7. 数据库杂谈(六)——数据库管理系统
  8. 函数指针史上最全的介绍
  9. 轻量级HTTP服务器Nginx(Nginx性能优化技巧)
  10. ssms只有空白解决方案_SSMS中的解决方案和项目概述
  11. Spring MVC 学习笔记2 - 利用Spring Tool Suite创建一个web 项目
  12. MTK-EngineeMode-Hardware Testing
  13. ftp服务器端口修改,如何修改服务器ftp端口教程
  14. flask-uploads上传插件上传文件
  15. 如何判断手机是否支持ASTC格式的贴图
  16. OSChina 周一乱弹 —— 我当你是朋友,你却……
  17. 计算机笔记--【Netty网络编程③】
  18. Apollo星火计划学习笔记|控制模块
  19. 利用免编程应用平台快速制作App
  20. WIN7下使用超级终端

热门文章

  1. 2017公共DNS服务器评估报告——公共DNS推荐(摘录)
  2. 苹果鼠标右键怎么按_iPadOS 13.4 鼠标体验如何?附使用指南
  3. potato chat 怎么用不了 土豆聊天软件 登陆不上 连接中 无法接收验证码 一直转圈...
  4. 企业Foxmail帐户邮箱数据保存在什么地方?
  5. python爬取雪球网交易数据
  6. CATIA二次开发—视图及视点
  7. pikachu靶场打靶分析
  8. 【建议收藏】你还不知道平面设计有哪些风格?掌握这20种就够了
  9. php 中echo用法,php echo的用法详解
  10. 旷世英才遭天妒——拉马努金