大家好,我是“孤云幕雨”;祝大家中秋快乐,今天给大家带来的是《Linux文件查找命令》

一、locate:依赖于事先构建的索引

v依赖于事先构建的索引;索引的构建是在系统较为空闲时自动进行(周期性任务);手动更新数据库:updatedb

v数据库配置文件:/var/lib/mlocate/mlocate.db

v索引构建过程需要遍历整个根文件系统,极消耗资源

v实时查找:遍历所有文件进行条件匹配

v非实时查找:根据索引查找

vlocate工作特点

Ü模糊查找

Ü优势:查找速度快

Ü非实时查找(数据库查找)

v只搜索用户具备读取和执行权限的目录

语法:locate文件名

locate KEYWORD

locate [OPTION]... PATTERN...

选项:

-i:查找时,不区分大小写

-b:只匹配路径中的基名

-c:统计出共有多少个符合条件的文件

-nN:仅显示前N个匹配条目

注意:索引构建过程需要遍历整个根文件系统,极消耗资源

二、find实时查找工具,通过遍历指定起始路径下文件系统层级结构完成文件查找

vfind工作特点

Ü查找速度慢

Ü精确查找

Ü实时查找

语法:find查找路径 查找条件

find查找路径 查找条件 处理动作

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

选项:

-L: 遵循符号链接

-P:不遵循符号链接

-maxdepth LEVEL: 设置最大目录层级

-mindepth LEVEL: 设置最小目录层级

v查找路径:指定具体目标路径;默认为当前目录

v查找条件:指定的查找标准,可以文件名、大小、类型、权限等标准进行;默认为找出指定路径下的所有文件

v处理动作:对符合查找条件的文件做出的操作;默认输出至屏幕

查找条件

根据文件名查找(支持使用glob风格的通配符)

v-name FileName:根据文件名称进行查找

v-iname FileName:根据文件名进行查找,不区分字符大小写

v-depth: 从指定目录下最深层的子目录开始查找

v-regex:支持正则表达式;以PATTERN匹配整个文件路径字符串,而不仅仅是文件名称

[root@zhangdaifu ~]# find /etc -name network

/etc/sysconfig/network

/etc/rc.d/init.d/network

[root@zhangdaifu ~]# find /etc -maxdepth 3 -mindepth 3 -name network

/etc/rc.d/init.d/network

根据文件从属关系查找

根据文件属主查找

v-user UserName:查找属主为指定用户的文件

根据文件属组查找

v-group GroupName:查找属组为指定组的文件

根据UID查找

v-uid UID:查找属主为指定uid号的文件

根据GID查找

v-gid UID:查找属组为指定gid号的文件

查找没有属主属组的文件

v-nouser:查找没有属主的文件

v-nogroup:查找没有属组的文件

根据文件类型查找

v-type文件类型(FILE_TYPE):指定文件类型进行查找

Ü文件类型(FILE_TYPE)

Ff:普通文件

Fd:目录文件

Fl:软链接文件

Fb:块设备文件

Fc:字符设备文件

Fp:管道文件

Fs:套接字文件

高级查找

组合条件查找

v-a:与;两个条件同时满足;默认(并且关系)

Ü多个条件之间默认就是“并且”关系

v-o:或;两个条件满足一个即可(或者关系)

v-not或!:非;条件取反

德.摩根定律

v非A并且非B

Ü!A -a !B = !(A -o B)

v非A或非B

Ü!A -o !B = !(A -a B)

根据文件系统查找

v-fstype FileSystem_type: 只寻找该文件系统类型下的文件或目录

根据文件大小查找

v开区间:不包括

v闭区间:包括

Ü(开区间)

Ü[闭区间]

v-size [+|-]#UNIT:根据指定文件大小进行查找;选项后可以加“+或-”加减号后加上数字,数字后面加单位,常用的单位有“k、M、G”;默认以字节为单位

Ü#UNIT: (#-1, #]

Ü-#UNIT:[0,#-1]

Ü+#UNIT:(#,oo)

Ü半开半闭区间:#UNIT: (#-1, #],>#-1<=#

Ü闭区间:#UNIT:[0,#-1],>0<=#-1

Ü开区间:+#UNIT:(#,oo),>#

v-expty:寻找文件大小为0 Byte的文件,或目录下没有任何子目录或文件的空目录

根据时间戳查找

以“天”为单位

v-atime [+|-]#:访问时间

大于等于#小于#+1

Ü#:[#, #-1),>=3<4

Ü-#:(#, 0], 0

Ü+#:(oo, #-1], --oo>#-1

Ü-:在N天之内(包括N本身)被访问过的文件

Ü+:在N天之前(不包含N本身)被访问过的文件

v-mtime:修改时间

v-ctima:改变时间

以“分钟”为单位

v-amin:访问时间

v-mmin:修改时间

v-cmin:改变时间

根据权限查找

v-perm [+|/|-] MODE:指定八进制权限位,查找对应的权限

ÜMODE:精确匹配

Ü至少一类有!所有都没有

Ü所有都有!至少一类没有

Ü{+|/}:任何一类用户(u、g、o)的权限中的任何一位(r、w、x)符合条件即满足(包含即为有,9位权限之间存在“或”关系;任何一位满足就行,隐藏着“或”关系)

# find / -perm +003

#不关心属主属组的权限、查找其他人能写或能执行的权限;0为不考虑

# find ./ -perm /222 –ls

#查找当前目录下,至少有一位用户有写权限的文件

Ü-:每一类用户(u、g、o)的权限中的每一位(r、w、x)同时符合条件即满足(9位权限之间存在“与”关系,隐藏着“与”关系)

666(包含,包含,包含)

766:符合

760:不符合

find / -not -perm 222

#至少有一类用户没有写权限

find / -perm -003

#不关心属主属组的权限、其他人需同时拥有w和x权限极为符合

注:在RHEL 7/CentOS 7上“+”被废掉,被替换成“/”

根据文件新旧查找

v-newer

Ü选项后+文件名+文件类型;查找比指定文件新的文件

Ü选项前+逻辑非+文件类型;查找比指定文件旧的文件

Ü选项后+文件1+逻辑非+选项+文件2+文件类型;查找比文件1新,比文件2旧的文件

根据Inode查找

v-inum INODE:根据Inode进行查找

v-samefile NAME:查找相同Inode的文件

v根据Inode删除文件

Ü当文件名太复杂不好删除时,可以根据Inode将其删除

find . -inum INODE-print  -exec  rm  {}  -rf  \;

find . -inumINODE-print  -exec  rm -rf {} \;

根据文件被链接的次数进行查找

v-links N:查找被[硬]链接N次的文件

处理动作

v-print:默认的动作;将查找到的内容输出到标准输出(屏幕)

v-ls:类似于对查找到的文件执行ls –l命令

v-delete:删除查找到的文件;操作有风险,确认需谨慎

v-fprint /PATH/TO/SOMEFILE:将查找到的文件保存到指定文件中,如果文件不存在则创建之

v-fls /PATH/TO/SOMEFILE:查把查找到的所有文件的长格式信息保存至指定文件中

v-ok COMMAND {} \;:对查找到的每个文件执行由COMMAND指定的命令;对于每个文件执行命令之前,都会交互式要求用户确认

v-exec COMMAND {} \;:对查找到的每个文件执行由COMMAND指定的命令;无需用户确认!

v{}:用于引用查找到的文件名称自身

注意:find传递查找到的文件至后面指定的命令时,查找到所有符合条件的文件一次性传递给后面的命令;有些命令不能接受过多参数,此时命令执行可能会失败

另一种方式可规避此问题

语法格式:find | xargs COMMAND

find命令练习

find命令练习(1)

1、找出/tmp目录下属主为非root的所有文件

# find /tmp -not -user root

2、找出/tmp目录下文件名中不包含fstab字符串的文件

# find /tmp -not -iname '*fstab*'

3、找出/tmp目录下属主为非root,而且文件名不包含fstab字符串的文件

# find /tmp -not \( -user root -o -iname '*fstab*' \)

4、找出当前系统下文件名带有~的文件

# find / -name *\~*

find命令练习(2)

1、查找/var目录下属主为root,且属组为mail的所有文件或目录

# find /var -user root -group mail

2、查找/usr目录下不属于root,bin或zhangdaifu的所有文件或目录用两种方法

# find /usr -not -user root -not -user bin -not -user zhangdaifu

find /usr -not \( -user root -o -user bin -o -user zhangdaifu \)

3、查找/etc目录下最近一周内其内容修改过,且属主不是root用户也不是zhangdaifu用户的文件或目录

# find /etc -mtime -7 -not \( -user root -o -user zhangdaifu \)

4、查找当前系统上没有属或属组,且最近一周内曾被访问过的文件或目录

# find / \( -nouser -a -nogroup \) -a -atime -7

5、查找/etc目录下大于1M且类型为普通文件的所有文件

# find /etc -type f -size +1M

6、查找/etc目录下所有用户都没有写权限的文件

# find /etc -not -perm /222 -type f

7、查找/etc目录至少有一类用户没有执行权限的文件

# find /etc -not -perm -111 -type f

8、查找/etc/init.d/目录下,所有用户都有执行权限,且其它用户有写权限的所有文件

# find /etc/init.d/ -perm -113 -type f

find /etc/init.d/ -type f -perm -111 -a -perm -002

文件系统查找

findfs通过标签或UUID查找文件系统

语法:findfs LABEL=label

findfs UUID=uuid

根据UUID进行查找

[root@localhost ~]# findfs UUID=6a7eb833-5bd7-4e73-8766-4de1607ecb90

/dev/sda5

根据卷标进行查找

[root@localhost ~]# findfs LABEL=DATA_DISKS

/dev/sdb

linux进入文件全文搜索命令,Linux 文件查找命令详解相关推荐

  1. 如虎添翼!一款强大的本地文件全文搜索工具

    ↑↑↑关注后"星标"简说Python 人人都可以简单入门Python.爬虫.数据分析 简说Python推荐来源:平凡而诗意 作者:JackpopOne old watch, lik ...

  2. Linux下文件查找使用详解-羽飞作品

    Linux下文件查找使用详解 (1/3) http://www.boobooke.com/v/bbk1579 Linux下文件查找使用详解 (2/3) http://www.boobooke.com/ ...

  3. linux xxx命令,linux命令ps aux|grep xxx详解

    对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程, 而ps命令(Process Status)就是最基本同时也是非常强大的进程查看命令. 使用该命令 可以确定有哪些进程正在运 ...

  4. linux cp -r 参数,Linux系统中cp命令的参数及用法详解

    Linux系统中cp命令主要是用来复制文件或者目录.下面由学习啦小编为大家整理了Linux系统中cp命令的参数及用法详解的相关知识,希望对大家有帮助! Linux系统中cp命令的参数及用法详解:参数说 ...

  5. linux dig命令的安装和使用详解

    linux dig命令的安装和使用详解 什么是dig命令 Dig是Domain Information Gopher的缩写,是一种DNS查找实用程序,用于探测DNS服务器并解决与DNS服务器相关的问题 ...

  6. linux中替换命令详解,linux中sed命令字符串替换的用法详解

    Linux系统中sed命令可以将字符串批量替换,省去了很多麻烦,下面由学习啦小编为大家整理了linux系统中sed命令字符串替换的用法详解,希望对大家有帮助! linux中sed命令字符串替换的用法详 ...

  7. linux命令ps -aux|grep xxx详解

    linux命令ps -aux|grep xxx详解 要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程, 而ps命令(Process Status)就是最基本同时也是非常强大 ...

  8. 编程实现linux中的who命令功能,Linux who命令简介及使用方法详解

    玩蛇网推荐图文教程:python 列表 本文是关于Linux who命令简介及使用方法详解一文.如果你是一名系统管理员,可能需要需要在一个特定的时间点都有谁活跃在系统上.以便必须严密监视我们的服务器. ...

  9. linux系统下安装pip3,linux下安装python3和对应的pip环境教程详解

    linux下安装python3和对应的pip环境教程详解 1.下载python3.6的安装包: 2.解压后,进入到解压目录下,执行如下命令,将python3.6进行编译,如下是将python的环境编译 ...

  10. 【Linux】循序渐进学运维-服务篇-FTP服务配置文件详解

    大家好,我是互联网老辛,本文是Linux运维-循序渐进学运维-服务篇的第14篇文章 文章目录 前言 ftp配置文件详解 1. 常见默认配置参数 2. 常见参数的含义 配置文件使用举例 1. 创建本地用 ...

最新文章

  1. 目标检测新技能!引入知识图谱:Reasoning-RCNN
  2. Linux学习笔记13:把网卡名字都修改成eth*
  3. jvm性能调优实战 - 44Metaspace区域是如何因为类太多而发生内存溢出OOM
  4. MAX3232和MAX232的具体差别
  5. 如何激发孩子的想象力_如何激发孩子的想象力?这4个方面要了解,让孩子快乐成长...
  6. Kubernetes Nginx Ingress教程
  7. Natasha 4.0 探索之路系列(四) 模板 API
  8. cmds在线重定义增加列
  9. 一篇综述翻译解读文章的发出也需要数易其稿
  10. 虚拟语气和推测(一)
  11. 【Java架构师】JVM性能优化(一)JVM技术入门下
  12. 黑客攻防技术宝典Web实战篇第2版—第3章 Web应用程序技术
  13. 用Python编写单元测试:如何开始? [关闭]
  14. SpringBoot(Properties)
  15. 无线传感器网络中低功耗MAC协议—S-MAC
  16. 触控笔和pencil笔一样吗?ipad可用的触控笔
  17. drupal 执行.php文件,Drupal7.xPHP代码执行漏洞分析
  18. 第一章---计算机系统概论
  19. 加班奖金终于发下来了!3060显卡自费包邮送!
  20. forestploter包,超赞的森林图绘制新R包

热门文章

  1. ROS 基础: 在同一个节点里订阅和发布消息
  2. 嵌入式Linux系统编程学习之二十九线程的互斥
  3. django 跳转其他网站_Django 实战 | 搭一个 GitHub 用户展示网站 04
  4. 编译原理基础---思维导图
  5. SpringMVC框架第三天
  6. 开源框架openresty+nginx 实现web应用防火墙(WAF)
  7. mac配置jenkins遇到的问题及解决办法
  8. 我眼中的Oracle Database Software 和 Oracle Database
  9. CSS Margin(外边距)
  10. autocomplete的使用