文件查找

  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-NIO之Channel(通道)

    1:Channel是什么 通道表示与实体的开放连接,例如硬件设备.文件.网络套接字或能够执行一个或多个不同 I/O 操作(例如读取或写入)的程序组件. 1.1:Channel与Stream的对比 St ...

  2. Spring的3级缓存和循环引用的理解

    此处是我自己的一个理解,防止以后忘记,如若那个地方理解不对,欢迎指出. 一.背景 在我们写代码的过程中一般会使用 @Autowired 来注入另外的一个对象,但有些时候发生了 循环依赖,但是我们的代码 ...

  3. ICO图标在线生成转换网站

    ico是Icon file的缩写,是Windows的图标文件格式的一种,可以存储单个图案.多尺寸.多色板的图标文件. 在Windows操作系统中,单个图标的文件名后缀是.ICO.这种格式的图标可以在W ...

  4. UML的三项基础

    UML的定义 UML语义:描述基于UML的精确元模型定义. UML表示法:定义UML符号和文本语法提供标准. 五类模型图 用例视图:用例图 逻辑视图:类图.对象图.包图(我把包放在一起的图) 静态视图 ...

  5. StringBoot整合ELK实现日志收集和搜索自动补全功能(详细图文教程)

    @ 目录 StringBoot整合ELK实现日志收集和搜索自动补全功能(详细图文教程) 一.下载ELK的安装包上传并解压 1.Elasticsearch下载 2.Logstash下载 3.Kibana ...

  6. Centos 7.4_64位系统安装指南

    小土豆Linux学习随笔 -- 清听凌雪慕忆 目录 1. 范围 1.1标识 1.2 文档概述 2. 安装环境 3. 安装步骤 4. 注意事项 1. 范围 1.1标识 CentOS 7.4 64位系统安 ...

  7. Spring Authorization Server 实现授权中心

    Spring Authorization Server 实现授权中心 源码地址 当前,Spring Security 对 OAuth 2.0 框架提供了全面的支持.Spring Authorizati ...

  8. 初始C语言作业一

    1.下面哪个不是C语言内置的数据类型:( ) A.char B.double C.struct Stu D.short 解析: C语言中内置类型包括 char //字符数据类型 short //短整型 ...

  9. kvm 虚拟化技术 1.3之kvm克隆以及快照

    1.kvm虚拟机克隆   克隆kvm虚拟机 ,克隆前需要提前关机     语法: virt-clone -o 原虚拟机  -n 新虚拟机 -f 新虚拟机镜像存放路径    选项中-o 表示 old  ...

  10. 6.Docker网络

    什么是 Docker网络 docker 不启动,默认网络情况 ens33 lo virbr0 在 CentOS7 的安装过程中如果有选择相关虚拟化的的服务安装系统后,启动网卡时会发现有一个以网桥连接的 ...