Linux文件查找实现
文件查找
- locate:非实时查找(依赖数据库的方式)
- find(实时查找)
locate:-- 模糊搜索(不适合经常改变的文件)
- locate 查询系统上预建的文件索引数据库 /var/lib/mlocate/mlocate.db
- 索引的构建是在系统较为空闲时自动进行(周期性任务),执行updatedb可以更新数据库
- 索引构建过程需要遍历整个根文件系统,很消耗资源
特点:
速度很快、模糊查找、非实时查找、搜索的是文件的全路径
选项:
-i: 不区分大小写
-r: 使用基本正则
范例:
#搜索名称或路径中包含“conf”的文件
locate conf
#使用Regex来搜索以“.conf”结尾的文件
locate -r '\.conf$'
find:通过遍历指定路径来查找文件(实时搜索)
特点:
速度慢、实时查找、精确查找
格式:
find [选项] [查找路径] [搜索条件] [处理动作]
- 查找路径:指定具体目标路径;默认为当前目录(默认是递归行为)
- 查找条件:指定的查找标准,可以文件名、大小、类型、权限等标准进行;默认为找出指定路径下的所有文件
- 处理动作:对符合条件的文件做操作,默认输出至屏幕
选项:
文件查找:
- 根据文件名查找: - name
- 根据文件所有者查找: -user
- 根据文件类型查找: -type
- 根据文件权限查找: -perm
1.根据文件名查找文件
- -name "文件名称" #支持使用glob通配符,如:*, ?, [], [^],通配符要加双引号引起来
- -iname "文件名称" #不区分字母大小写
范例:
find -name snow.png -- 查找当前目录下文件名为show.png的文件
find -iname snow.png -- 查找的时候不区分大小写
find / -name ".txt" -- 查找根目录下
2.根据文件所有者或所有组查找
-user USERNAME #查找属主为指定用户(UID)的文件
-group GRPNAME #查找属组为指定组(GID)的文件
3.根据文件类型查找
-type TYPE
TYPE可以是以下形式:
f: 普通文件
d: 目录文件
l: 符号链接文件
s:套接字文件
b: 块设备文件
c: 字符设备文件
p: 管道文件
范例:#查看/home的目录
find /home –type d -ls
根据文件大小来查找
-size +或- file_size 单位:k M G
- 单独只写文件大小:表示(size-1,size]这个范围的文件大小
- + 文件大小: 表示(当前文件大小,∞)这个范围 --- 大于这个文件大小的文件
- - 文件大小: 表示[0-文件大小-1]这个范围的文件
4.根据权限查找
- -perm(permission)
[/|-]MODE - MODE #精确权限匹配
- /MODE #任何一类(u,g,o)对象的权限中只要能一位匹配即可,或关系.
- -MODE #每一类对象都必须同时拥有指定权限,与关系
0 表示不关注
比如: -600或/600 表示所属组和其他人的权限不管人,只关心非0的部分。
范例:
- find -perm 600 filename ---精确匹配权限
- find -perm /600 finename --- 表示所有者的权限是读(r -- 4)或写(w -- 2)都可以(
0表示不关心) - find -perm -600 finename --- 表示所有者权限是(r和w)(所属组和其他的权限不关心)
组合条件
- 与:-a ,and,默认多个条件是与关系
- 或:-o ,or
- 非:-not !
处理动作:找到文件以后执行的操作
-print:默认动作,输出到屏幕
-ls:类似于执行ls -dils命令
-exec COMMAND {} ; -- 对查找到的文件执行COMMAND命令
{}: 占位符,用于表示查找到的文件名称
参数替换:xargs
- xargs本身默认是读取键盘的输入,然后将他显示到屏幕。(这个功能类似于cat)
例如:(输入完成后按回车,然后ctrl+d退出)

- xargs可以接受键盘的标准输入,把键盘输入的结果通过xaegs传递后续的命令,作为后续命令的参数。(以空格、回车将数据分隔为参数)
例如:

删除当前目录下的大量文件
ls | xargs rm(使用ls显示文件名,然后xargs将它作为传递给rm命令)
范例:
例如:不换行显示十个数字 seq 10 | xargs(多行合成一行)

xargs选项:
- -n1:传递一个就单独一行
- -n2:两个作为一个整体来处理

范例:批量创建用户
echo user{1..10} | xargs -n1 useradd
和find命令组合使用: find | xargs COMMAND
例如:#查找有特殊权限的文件,并排序
find /bin/ -perm /7000 | xargs ls -Sl -- 找到含有特殊权限的文件以后进行从大到小的顺序排序。
例如:#以字符nul分隔(默认xargs以空格作为切割文件的分隔符)
find -type f -name "*.txt” -print0 | xargs -0 rm
-print0:用ascii的0作为切文件的分隔符
-0: xargs以0作为分隔符进行切割
Linux文件查找实现的更多相关文章
- Linux文件查找.md
Linux 文件查找 在Linux系统的查找相关的命令: which 查看可执行文件的位置 whereis 查看文件的位置 locate 配合数据库查看文件位置 find 实际搜寻硬盘查询文件名称 w ...
- Linux文件查找命令find用法整理(locate/find)
Linux文件查找查找主要包括:locate和find 1.locate 用法简单,根据数据库查找,非实时,用法: locate FILENAME 手动更新数据库(时间可能较长) updatedb 2 ...
- linux文件查找find命令
linux文件查找find命令 1.文件查找 基本介绍 在文件系统上查找符合条件的文件 linux上常见的文件查找工具:find命令 查找分类 实时查找 精确查找 基本语法 find [option ...
- linux 文件查找,which,whereis,locate,find
linux 文件查找,which,whereis,locate,find 一:which 主要用于查找可执行命令的所在位置: 如图,查找命令 ls的目录: 二:whereis 主要用于查找命令的帮助文 ...
- Linux文件查找命令find,xargs详述【转】
转自:http://blog.csdn.net/cxylaf/article/details/4069595 转自http://www.linuxsir.org/main/?q=node/137 Li ...
- Linux文件查找
Linux下查找文件的命令有两个; locate: find : locate这个命令对其生成的数据库进行遍历(生成数据库的命令:updatedb),这一特性决定了查 找文件速度很快,但是locate ...
- Linux文件查找工具之find “大宝剑”--转载
原文地址:http://xinzong.blog.51cto.com/10018904/1749465 一.文件查找工具常用软件 locate: locate命令其实是find -name的另一种写法 ...
- linux - 文件查找及压缩
文件查找: 1. which 查找可以执行文件,只搜索$PATH里的目录 $ which ls /bin/ls which只搜索$PATH里的目录,如果搜索当前目录的文件是没有任何结果的 $ ...
- Linux 文件查找
在Linux系统的查找相关的命令: which 查看可执行文件的位置 whereis 查看文件的位置 locate 配合数据库查看文件位置 find 实际搜寻硬盘查询文件名称 whereis wher ...
- linux文件查找及操作
在linux下查找文件的办法最常用的就是find指令,让我们来看一下find指令如何来使用吧: find find . -name txt //在当前目录查找名字为txt的文 ...
随机推荐
- Fabric2.2中的Raft共识模块源码分析
引言 Hyperledger Fabric是当前比较流行的一种联盟链系统,它隶属于Linux基金会在2015年创建的超级账本项目且是这个项目最重要的一个子项目.目前,与Hyperledger的另外几个 ...
- Codeforces Round #707 (Div. 2)A.英语漏洞 + C.Going Home C题收获不小
A题英语漏洞 A题传送门: https://codeforces.com/contest/1501/problem/A 其实题目说的很明白, 只是我傻傻的会错了意, 话不多说, 开整. 前两行是说, ...
- Java语言学习day28--8月03日
###10接口作为方法参数与返回值 * A: 接口作为方法参数 接口作为方法参数的情况是很常见的,经常会碰到.当遇到方法参数为接口类型时,那么该方法要传入一个接口实现类对象.如下代码演示. //接 ...
- JAVA语言学习day16--7月22日
###15用户选择功能 * A: 用户选择功能 * a: 案例代码 import java.util.ArrayList; import java.util.Scanner; /* * 超市管理系统主 ...
- ArcGIS使用技巧(一)——数据存储
新手,若有错误还请指正! 日常接触ArcGIS较多,发现好多人虽然也在用ArcGIS,但一些基础的小技巧并不知道,写下来希望对大家有所帮助. ArcGIS默认的存储数据库是在C盘(图1),不修改存储数 ...
- 从压测碰到的诡异断连问题聊聊Nginx的连接管理
本文主要分享一个在压测Nginx反向代理服务过程中碰到的连接异常断开问题,包括问题的定位与复现,最后由这个实际问题引申聊一下Nginx的连接管理. 本博客已迁移至CatBro's Blog,那是我自己 ...
- Vue3 setup详解
setup执行的时机 在beforeCreate之前执行(一次),此时组件对象还没创建: this是undefined,不能通过this来访问data/computed/methods/props: ...
- 记一次sql注入的解决方案
点赞再看,养成习惯,微信搜索「小大白日志」关注这个搬砖人. 本文在公众号文章已同步,还有各种一线大厂面试原题.我的学习系列笔记. 今天业务提了个模糊查询,一听就知道这种问题有坑,肯定涉及到sql注入, ...
- 《Mybatis 手撸专栏》第7章:SQL执行器的定义和实现
作者:小傅哥 博客:https://bugstack.cn - <手写Mybatis系列> 一.前言 为什么,要读框架源码? 因为手里的业务工程代码太拉胯了!通常作为业务研发,所开发出来的 ...
- QY-19 GNSS位移监测站 地质灾害在线监测-实时预警
概述 GNSS的全称是全球导航卫星系统(Global Navigation Satellite System),它是泛指所有的卫星导航系统,包括全球的.区域的和增强的,如美国的GPS.俄罗斯的Glon ...