Linux文件查找之find&locate

Linux文件查找之find&locate

一、概述

Linux系统核心的思想之一“一切皆文件“,对于这么多的文件,如何快速查找过滤呢?下面我们就看看系统提供的文件查找命令find和locat,熟练使用find命令是运维人员的必经之路

二、find的用法及示例

1.find特点

查找速度略慢

精确查找

实时查找

只能搜索有读取和执行权限的目录

2.find用法

用法:find  [options]  [查找路径]  [ 查找条件]  [处理动作]

查找条件:

根据文件类型查找
	-type f|d.......
	f			普通文件
	d			目录
	l			链接
	s			套接字
	b			块设备
	c			字符设备
	p			管道文件
	根据属主、属组查找
	-user name			查找目录下属主为name的文件
	-group g1			查找属组为g1的文件
	-uid #			查找uid为#的文件
	-gid #			查找gid为#的文件
	-nouser			查找没有属主的文件
	-nogroup			查找没有属组的文件
	特定选项
	-mindepth level		设置最小搜索层级
	-maxdepth level		设置最大搜索层级
	-name				匹配文件名搜索,支持通配符
	-iname			以名称搜索,忽略文件名大小写
	-inum #			按inode号搜索
	-samefile 			搜索相同inode号的文件
	-links #			搜索链接数为#的文件
	-regex "pattern"		搜索匹配该字符串的文件
	-prune			将某个目录排除在搜索路径之外
	根据文件大小查找
	-size  [+|-]#(单位)	常用单位:k  M  G
  	      	6k		表示5k<S≤6k
			-6k		表示0≤S≤5k
			+6k		表示S>6k 
	根据时间戳查找
	-atime  [+|-]#		+5:5天以前  -10:十天以内
	-atime   			访问时间,以天为单位 
	-mtime			更改时间,以天为单位
	-ctime			改变时间,以天为单位
	-amin				以分钟为单位
	-mmin				以分钟为单位
	-cmin				以分钟为单位

根据权限查找

-perm [/|-]mode

mode 精确权限匹配 如:find -perm 222  匹配权限为222的文件

/mode 权限位(ugo),只要有一位匹配即可,或者关系

如:find -perm /222  只需一个权限位有写权限即可

-mode 指定权限权限位都必须匹配

如:find -perm -222  各权限位都有写权限

注意三种权限的区别

组合条件

-a 与

-o 或

-not,! 非

烧脑的非选项

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

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

处理动作

-print 打印匹配文件

-ls 长格式显示匹配文件

-delete 删除匹配文件

-fls outfile 输出到指定文件

-ok cmd {} \; 对查找到的每个文件执行cmd命令,交互确认

-exec cmd {} \; 执行cmd命令,不进行交互确认

{} 代表查找到的文件自身

注意:由于是find查找到的文件,是一次性传递给后面的cmd命令,有写命令会出现报错现象,可使用xargs解决

find  .......   |   xargs   cmd

3.find使用实例

①、搜索/var目录下文件名中含有log的文件

find /var -name "*log*"

②、搜索/app目录下属主为tom,数组为g1的文件

find /app  -user tom -a -group g1

③、搜索/app目录下属主不是tom,也不是joe的文件

find /app -not -user tom -a -not -user -joe

find /app -not \(-user tom -o -user joe\)

④、删除存在时间超过3天以上,属主为tom的临时文件

find /tmp -ctime +3 -user tom -ok rm {} \;

⑤、查找自己家目录可以被其他用户写入的文件,并去掉其他用户的写权限

find ~ -perm -022 -exec  chmod  o-w  {}  \;

⑥、查找/var目录下10以前修改的文件

find /var -mtime +10 -print

⑦、查找/var目录下10以内修改的文件

find /var -mtime -10

⑧、查找/var目录更改时间下比file1.log新,比file2.log旧的文件

find /var -newer file1.log -a -not -newer file2.log

⑨、查找/etc一级目录下所有的目录文件

find /etc -maxdepth 1 -type d

⑩、查询/目录下大于100M的文件

find / -size +100M

11、删除/root一级目录中非隐藏文件的普通文件

find ~ -maxdepth 1 -type f |grep -v "/root/\."

12、查询当前系统中没有属主和属组的文件

find / -nouser -a -nogroup

13、查找系统中所有具备suid权限的文件

find / -perm /u=s

14、查找系统中所有具备sgid权限的文件

find / -perm /g=s

15、查找/etc所有可执行文件

find /etc -perm /a=x

16、查找系统中所有空文件

find / -type f -empty

17、查询/etc目录下所有隐藏文件

find /etc -type f -name ".*"

18、查找50-100内被修改过的文件

find / -mtime +50  -mtime -100

19、查找最近1小时被修改过的文件

find / -mmin -60

三、locate用法及示例

1、locate概述

相比find,locate查找速度比较快,但由于其仅支持非实时查找,使用率不高

2、locate工作特点

查找速度快

非实时查找

搜索文件全路径

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

3、locate用法

locate [options]  匹配模式

-i 不区分大小写搜索

-n # 只列举前#个匹配项

4、示例

locate conf 查找文件名中含有conf的文件

Linux文件查找之find&locate

时间: 2024-12-04 11:42:58

Linux文件查找之find&locate的相关文章

Linux文件查找find和locate

目 录 第1章 locate文件查找    1 1.1 概述    1 1.2 locate文件查找的特性    1 第2章 文件查找概述    1 第3章    1 3.1 文件名查找    1 3.2 文件大小查找    1 3.3 时间戳查找    1 3.4 文件从属关系查找    1 3.5 文件类型查找    1 3.6 权限查找    1 3.7 组合查找    1 3.8 处理动作    1 locate文件查找 概述 安装 yum install -y mlocate loca

linux文件查找(find,locate)

文件查找: locate: 非实时,模糊匹配,查找是根据全系统文件数据库进行的: # updatedb, 手动生成文件数据库 速度快 find: 实时 精确 支持众多查找标准 遍历指定目录中的所有文件完成查找,速度慢: find 查找路径 查找标准 查找到以后的处理运作 查找路径:默认为当前目录 查找标准:默认为指定路径下的所有文件 处理运作:默认为显示 匹配标准: -name 'FILENAME':对文件名作精确匹配 文件名通配: *:任意长度的任意字符 ? [] -iname 'FILENA

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

Linux文件查找查找主要包括:locate和find 1.locate 用法简单,根据数据库查找,非实时,用法: locate FILENAME 手动更新数据库(时间可能较长) updatedb 2.find 实时,精确,功能强大,用法: find 路径 查找标准 查找后动作 (1)路径:. 或者 ./ 均表示当前目录 (2)查找标准: -name 'FILENAME' 文件名精确匹配(支持通配符* ? []) -iname 'FILENAME' 文件名模糊匹配(不分大小写) -regex P

linux 文件查找 (locate 与 find)

文件查找 目录 1.locate2.find 一. locate locate命令基于数据库db,所以不能实时更新 他有如下的特点: 1.查找速度快 2.是模糊查找(可能搜到了文件,也有可能搜到了目录) 3.是非实时的查找 4.由于权限的原因可能只查找到一部分的文件 locate 参数: -i 不区分大小写 -n N 只列举前N个项目 -r 支持正则表达式 locate xiaoyu 搜索名称或路径中带有"xiaoyu"的文件 例: 二. find 实时查找工具,通过遍历指定路径完成文

Linux文件查找.md

Linux 文件查找 在Linux系统的查找相关的命令: which 查看可执行文件的位置 whereis 查看文件的位置 locate 配合数据库查看文件位置 find 实际搜寻硬盘查询文件名称 whereis whereis命令是定位可执行文件.源代码文件.帮助文件在文件系统中的位置.这些文件的属性应属于原始代码,二进制文件,或是帮助文件.whereis 程序还具有搜索源代码.指定备用搜索路径和搜索不寻常项的能力. 语法 whereis [-bmsu] 文件或者目录名称 参数 -b 定位可执

Linux文件查找

Linux文件查找 Linux的基本法则之一为一切皆文件,Linux遵循FHS(Filesystem Hierarchy Standard),文件系统目录标准,FHS采用树形结构组织文件:在使用过程中,我们会遇到知道文件名却不知道文件位置的情况,或者查找某些类型的文件,此时我们需要文件查找的功能. 一.常用查找命令: Locate与finad: locate命令为非实时查找模式:非实时查找,需要根据索引查找,依赖于索引,而索引构建相当占用资源:索引的创建是在系统空闲时由系统自动进行(每天任务):

Linux 文件查找命令find,xargs详述

Linux文件查找命令find,xargs详述     <exec 后期讲解> 关于find命令 由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下.即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限. 在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间(这里是指30G字节以上的文件系统). 一.find 命令格式 1.find命令的一般形式为:

Linux文件查找命令find,xargs详述

转自:http://www.linuxsir.org/main/node/137本文进行了整理修订 Linux文件查找命令find,xargs详述 摘要: 本文是find 命令的详细说明,可贵的是针对参数举了很多的实例,大量的例证,让初学者更为容易理解:本文是zhyfly兄贴在论坛中:我对本文进行了再次整理,为方便大家阅读: 目录 版权声明 前言:关于find命令 一.find 命令格式 1.find命令的一般形式为: 2.find命令的参数: 3.find命令选项: 4.使用exec或ok来执

文件查找 /which/whereis/locate/find/grep

Which #查找固定的目录# [[email protected] home]# which ba /usr/bin/which: no ba in (/usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin) [[email protected] home]# which ls alias ls='ls --color=auto' /bin/ls 我们可以看到 whic