文件查找工具locatfind
locate
索引构建过程需要遍历整个根文件系统,极消耗资源,所以系统会在较为空闲时生成或更新/var/lib/mlocate/mlocate.db,系统会自动生成该文件,但是新装系统要等一段时间才会生成该文件
手动生成或者更新数据库——updatedb
工作特点:
• 查找速度快
• 模糊查找
• 非实时查找
• 搜索的是文件的全路径,不仅仅是文件名
• 可能只搜索用户具备读取和执行权限的目录
有用的选项
-i 不区分大小写的搜索
-n N 只列举前N个匹配项目
-r 使用基本正则表达式
find
find是实时查找工具,通过遍历指定路径完成文件查找
1.工作特点:
- 查找速度略慢
- 精确查找
- 实时查找
- 只搜索用户具备读取执行权限的目录
这些特点都是相对于另一种基于数据库的查找工具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相关推荐
- Linux文件查找工具之find “大宝剑”--转载
原文地址:http://xinzong.blog.51cto.com/10018904/1749465 一.文件查找工具常用软件 locate: locate命令其实是find -name的另一种写法 ...
- Duplicate Manager Pro for Mac(重复文件查找工具)破解版安装
1.Duplicate Manager Pro 简介 Duplicate Manager Pro 是 macOS 系统上一款重复文件查找工具,可以帮你在 Mac 电脑上查找出磁盘上面的重复文件,然后让 ...
- Duplicate File Finder for Mac(重复文件查找工具)
Duplicate File Finder for Mac 破解版就能够帮助您将这些占用您空间的重复软件和文件删除了,Duplicate File Finder Mac版具有智能"拖放&qu ...
- Linux文件查找工具之find “大宝剑”
一.文件查找工具常用软件 locate: locate命令其实是find -name的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/locatedb,这 ...
- Linux文件查找工具的探索
经过 Linux 系统不断探索,不断发展到现代文明,我们都必须坚信:一个典型的 Linux 系统是包含很多文件的,即是由文件组成的!那么新的问题就会涌现到我们的脑海中--"我们如何查找呢?& ...
- linux c 文件查找字符串,Linux基础之文件查找工具:locate、find
引言: 在学习Linux中的文件查找时,突然联想到平时用的搜索引擎,在生活中我们想获取什么信息,在google等搜索引擎里面敲入就能列出符合我们条件的相关信息.如果我们不满意搜索结果可以进一步精确我们 ...
- linux grep 多个文件,Linux多文件查找工具之grep
1. 简介 grep全称Global Regular Expression Print,全局正则表达式打印. 在这里面提到了三个关键词,我们逐个进行分析,这样有助于我们理解 grep这个命令的作用,1 ...
- Linux 命令之 locate -- 文件查找工具(查找文件/搜索文件)
文章目录 一.命令介绍 二.相关文件说明 配置文件 updatedb.conf 三.更新数据库 四.常用选项 五.命令示例 搜索文件名以指定字符串开头的文件 查找名称中含有指定字符串的文件 使用正则表 ...
- 【linux基础】10、文件查找工具
目录 locate find -name,-iname --regex -user,-group,-uid,gid,-nouser,-nogroup -type -size -+ #-1 ...
- everything 全盘文件查找工具及正则表达式的使用
首先需要开启 everything 工具在(字符串)查找时,对正则表达式功能的支持: [菜单栏]⇒ [Search]⇒ 勾选[Enable Regex] ctrl + i:字符大小写敏感/不敏感 1. ...
最新文章
- springmvc配置DispatcherServlet拦截url注意事项
- 谷歌15个人工智能开源免费项目!开发者:懂了
- d类功放芯片_【学术论文】应用于无滤波级D类音频功放的新型死区时间控制系统...
- php gd 缩略图,[PHP GD库]①0--缩略图封装
- CVE-2012-1876调试要点
- 【数据结构】——归并排序
- 数据库杂谈(六)——数据库管理系统
- 函数指针史上最全的介绍
- 轻量级HTTP服务器Nginx(Nginx性能优化技巧)
- ssms只有空白解决方案_SSMS中的解决方案和项目概述
- Spring MVC 学习笔记2 - 利用Spring Tool Suite创建一个web 项目
- MTK-EngineeMode-Hardware Testing
- ftp服务器端口修改,如何修改服务器ftp端口教程
- flask-uploads上传插件上传文件
- 如何判断手机是否支持ASTC格式的贴图
- OSChina 周一乱弹 —— 我当你是朋友,你却……
- 计算机笔记--【Netty网络编程③】
- Apollo星火计划学习笔记|控制模块
- 利用免编程应用平台快速制作App
- WIN7下使用超级终端