文件查找

  1. locate:非实时查找(依赖数据库的方式)
  2. find(实时查找)

locate:-- 模糊搜索(不适合经常改变的文件)

  1. locate 查询系统上预建的文件索引数据库 /var/lib/mlocate/mlocate.db
  2. 索引的构建是在系统较为空闲时自动进行(周期性任务),执行updatedb可以更新数据库
  3. 索引构建过程需要遍历整个根文件系统,很消耗资源

特点:

速度很快、模糊查找、非实时查找、搜索的是文件的全路径

选项:

-i: 不区分大小写

-r: 使用基本正则

范例:

#搜索名称或路径中包含“conf”的文件
locate conf
#使用Regex来搜索以“.conf”结尾的文件
locate -r '\.conf$'

find:通过遍历指定路径来查找文件(实时搜索)

特点:

速度慢、实时查找、精确查找

格式:

find [选项] [查找路径] [搜索条件] [处理动作]

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

选项:

文件查找:

  1. 根据文件名查找: - name
  2. 根据文件所有者查找: -user
  3. 根据文件类型查找: -type
  4. 根据文件权限查找: -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文件查找实现的更多相关文章

  1. Linux文件查找.md

    Linux 文件查找 在Linux系统的查找相关的命令: which 查看可执行文件的位置 whereis 查看文件的位置 locate 配合数据库查看文件位置 find 实际搜寻硬盘查询文件名称 w ...

  2. Linux文件查找命令find用法整理(locate/find)

    Linux文件查找查找主要包括:locate和find 1.locate 用法简单,根据数据库查找,非实时,用法: locate FILENAME 手动更新数据库(时间可能较长) updatedb 2 ...

  3. linux文件查找find命令

    linux文件查找find命令 1.文件查找 基本介绍 在文件系统上查找符合条件的文件 linux上常见的文件查找工具:find命令 查找分类 实时查找 精确查找 基本语法 find  [option ...

  4. linux 文件查找,which,whereis,locate,find

    linux 文件查找,which,whereis,locate,find 一:which 主要用于查找可执行命令的所在位置: 如图,查找命令 ls的目录: 二:whereis 主要用于查找命令的帮助文 ...

  5. Linux文件查找命令find,xargs详述【转】

    转自:http://blog.csdn.net/cxylaf/article/details/4069595 转自http://www.linuxsir.org/main/?q=node/137 Li ...

  6. Linux文件查找

    Linux下查找文件的命令有两个; locate: find : locate这个命令对其生成的数据库进行遍历(生成数据库的命令:updatedb),这一特性决定了查 找文件速度很快,但是locate ...

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

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

  8. linux - 文件查找及压缩

    文件查找: 1.  which    查找可以执行文件,只搜索$PATH里的目录 $ which ls /bin/ls which只搜索$PATH里的目录,如果搜索当前目录的文件是没有任何结果的 $ ...

  9. Linux 文件查找

    在Linux系统的查找相关的命令: which 查看可执行文件的位置 whereis 查看文件的位置 locate 配合数据库查看文件位置 find 实际搜寻硬盘查询文件名称 whereis wher ...

  10. linux文件查找及操作

    在linux下查找文件的办法最常用的就是find指令,让我们来看一下find指令如何来使用吧: find find . -name  txt             //在当前目录查找名字为txt的文 ...

随机推荐

  1. 今天写了一个可以测试并发数和运行次数的压力测试代码。(Java)

    今天写了一个可以测试并发数和运行次数的压力测试代码 介绍一下为什么会写这么一个工具. 介绍一个这个工具怎么用的. 背景 最近在开发CoapServer端,以及模拟设备侧发送数据调用开发好的CoapSe ...

  2. codeforces标签设置【codeforces内操作, 非浏览器操作】

    直接干货~ 明确需求,关闭标签 步骤: 1.选中上方PROBLEM SET 2.找到Settings  第一个选项是展示未accepted的标签, 第二个选项是隐藏已accepted的标签 官方标签设 ...

  3. 【面试普通人VS高手系列】HashMap是怎么解决哈希冲突的?

    常用数据结构基本上是面试必问的问题,比如HashMap.LinkList.ConcurrentHashMap等. 关于HashMap,有个学员私信了我一个面试题说: "HashMap是怎么解 ...

  4. 数据库基础知识详解五:MySQL中的索引和其两种引擎、主从复制以及关系型/非关系型数据库

    1.MySQL中的索引 在MySQL,索引是由B+树实现的,B+是一种与B树十分类似的数据结构. 形如下面这种: 其结构特点: (1)有n课子树的结点中含有n个关键码. (2)非根节点子节点数: ce ...

  5. MySQL免安装版发生系统错误 1067

    使用MySql免安装版启动时1067 解决办法 打开安装的文件夹 找到my.ini的mysqld模块,调整参数位置. 3. 重新启动Mysql服务 net start mysql

  6. SpringBoot 如何进行参数校验

    为什么需要参数校验 在日常的接口开发中,为了防止非法参数对业务造成影响,经常需要对接口的参数进行校验,例如登录的时候需要校验用户名和密码是否为空,添加用户的时候校验用户邮箱地址.手机号码格式是否正确. ...

  7. NuGet包管理平台

    这节来讲一下.NET下的包管理平台:NuGet. 我们做一个项目,除了自己的代码文件之外,实际上还要引用诸多代码文件,这些文件可能是我们自己封装的底层框架代码,或者为了完成某个功能而引用的工具类文件等 ...

  8. 「Python实用秘技08」一行代码解析地址信息

    本文完整示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/PythonPracticalSkills 这是我的系列文章「Python实用秘技」的第8期 ...

  9. AspNetCore开源中间件-VueRouterHistory

    前言 用过VueRouter路由组件的应该都知道,VueRouter有hash和history两种模式.hash模式会在url中插入#,history模式下url则看上去更加简洁美观.如果想要支持hi ...

  10. 2021春季学期华清大学EE数算OJ3:岩石的重量

    原题目如下: 看起来,这不过是我们在<程序设计基础>里面接触过的简单动态规划问题(什么,你不知道什么叫动态规划? 什么是动态规划? 百度百科对"动态规划"一词定义如下: ...