文件查找命令find

日期: 2015年08月30日

文件查找:在文件系统上查找符合条件的文件的过程

Linux系统上常用的两个文件查找工具:

locate:

依赖于实现构建的索引,索引的构建是在系统较为空闲时自动进行(周期性任务)生成的。

必要时,可手动执行updatedb命令

优点:速度快

缺点:非实时查找、模糊查找

find:

通过遍历指定的目标目录,实时查找符合指定实属性的文件

优点:实时查找、精确匹配

缺点:遍历文件系统、速度慢

find命令

格式:

find [OPTIONS] [查找路径] [查找条件] [处理动作]

查找路径:默认为当前路径

查找条件:默认为指定路径下的所有文件

处理动作:默认显示到屏幕

查找条件:

根据文件名查找:

-name  "文件名",文件名支持使用globbing

# find /etc/ -name "passwd*"#在/etc目录下搜索名为passwd的文件

-iname  "文件名" 不区分大小写

-regex ‘PATTERN‘,以PATTERN匹配整个文件路径字符串,而不仅仅是文件名

根据文件的属主或属组查找:

-user USERNAME:  根据文件属主查找

-group GROUPNAME:  根据文件属组查找

根据文件的属主或属组的ID号查找:

-uid  UID:  根据指定的UID查找

-gid  GID:  根据指定的GID查找

查找没有属主或属组的文件:

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

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

组合查找条件:

组合多个条件查找运用逻辑运算:与、或、非

:-a  查找条件1 -a 查找条件2 -a ... (-a可省略)

所有条件必须同时满足

# find /tmp/ -nouser -a -name "*centos*"

:-o  查找条件1 -o 查找条件2 -o ...

满足其中一个条件即可

# find /tmp/ -name "*centos*" -o -uid 500

:-not or !

-not 查找条件不满足指定条件的(相反)

# find / -not -user root | xargs ls -ld

# find / ! -user root | xargs ls -ld

与: 重叠部分:既属于A,又属于B

或: A+B-重叠部分(减去与的部分)

非: 除A之外,或除B之外


!A  -o !B


=  


!(  A -a B )


!A  -a !B


=  


!( A -o B )

实例1:

//查找/tmp/下非php与非txt结尾的文件

# find /tmp -not -name "*php" -a -not -name"*txt"

//查找/tmp/下非php或非txt结尾的文件

# find /tmp -not \( -name "*.php" -o -name"*.txt" \)

根据文件类型查找:

-type 文件类型

f  普通文件

d  目录文件

l  符号链接文件

b  块设备

c  字符设备文件

p  命名管道文件

s  套接字文件

根据文件大小查找:

-size [+|-] #UNIT

常用单位有:k,M,G

不带+|- 表示精确匹配

实例1:

//查找/etc目录下2k的文件

#UNIT: #-1 < x <= #

find /etc/ -size 2k -exec ls -lh {} \;

(2k: 匹配范围是1.1k - 1.9k)

//查找/etc目录下-2k的文件

-#UNIT: x <= #-1

find /etc/ -size -2k -exec ls -lh {} \;

(-2k: 匹配范围是小于等于1k)

//查找/etc目录下+2k的文件

+#UNIT: x >#

find /etc/ -size +2k -exec ls -lh {} \;

(+2k: 匹配范围是大于2.1k以上)

根据时间戳查找:(过去的某个时间节点)

以“天”为单位

-atime [+|-]#: 根据访问时间查找

-mtime [+|-]#: 根据修改时间查找

-ctime [+|-]#:  根据改变时间查找

实例2:

//查找/etc目录下访问时间为3天的文件

#: # =< x < #+1

find /etc/ -atime 3 -exec stat {} \;

(3: 匹配范围是从3天 - 4天之间)

//查找/etc目录下3天之内访问过的文件

-#: x < #

find /etc/ -atime -3 -exec stat {} \;

(-3: 匹配范围是小于3天之内的)

//查找/etc目录下3天以前访问过的文件

+#:# x >= #+1

find /etc/ -atime +3 -exec stat {} \;

(+3: 匹配范围是等于或大于3天以上的)

以“分钟”为单位

-amin [+|-]#:  根据访问时间查找

-mmin [+|-]#:  根据修改时间查找

-cmin [+|-]#:  根据改变时间查找

find /tmp/ -amin -5 查找范围是小于5分钟内

find /tmp/ -mmin +5 查找范围是大于或等于5分钟以上

根据权限查找:

-perm [+|-]MODE

MODE: 不带+|- 表示与MODE精确匹配

find /etc/ -perm 644 查找权限为644的文件

+MODE: 任何一类用户的权限只要能包括对其指定的任何一位权限即可

find /etc/ -perm +555 任何一类用户有任何一位权限即匹配

-MODE: 每一类对象指定的每一位权限都必须同时存在方为符合条件;隐含与条件。

find /etc/ -perm -111 -ls 查找所有人都有执行权限

find /etc/ -perm -222 -ls 查找所有人都有写权限

find /etc/ -perm -666 -ls 查找所有人都有读和写权限

权限计算:

3=2+1

4=read

5=4+1

6=4+2

7=4+2+1

处理动作:

-print  默认动作:打印至屏幕

-ls  显示找到的文件的详细属性

-exec COMMAND {} \; 对找到的文件执行期望的操作

删除/tmp下没有属组的文件

find /tmp -nogroup -a -type f -exec rm {} \;

-ok        COMMAND {}\;  执行命令之前提示确认

注意:

find命令会一次性找到所有符合条件的文件,并一同传递给后面的命令;但有些命令不能接收过长的参数

解决办法: find | xargs COMMAND

时间: 2024-10-06 04:30:15

文件查找命令find的相关文章

linux下find(文件查找)命令的详解

文件查找命令locate和find详解 locate 配合数据库缓存,快速查看文件位置,非实时查找( 数据库查找) find 实际搜寻硬盘查询文件名称 ,实时查找 locate简介 locate命令其实是find -name的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/locatedb,这个数据库中含有本地所有文件信息.Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件.为了避免这种情况,可以在

find 文件查找命令

个人觉得find命令是很强大的文件查找命令,可以根据1:文件名 2:文件类型 3:文件时间 4:文件大小 5:目录深度 6:权限 7:正则表达式进行查找 8:查找用户所拥有的文件,并能结合9:exec 进行更多的操作 1:基于文件名 find 查找目录 -name 查找内容 2:基于文件类型 find 查找目录 -type [d 目录] [f 文件] [l 链接] 文件类型: f:文件 l:链接 d:目录 c:字符设备 b:块设备 s:套接字 p:FIFO 3:基于时间查找 find 查找目录

linux下的find文件查找命令与grep文件内容查找命令

linux下的find文件查找命令与grep文件内容查找命令 在使用linux时,经常需要进行文件查找.其中查找的命令主要有find和grep.两个命令是有区的. 区别:(1)find命令是根据文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为空,访问时间,修改时间等. (2)grep是根据文件的内容进行查找,会对文件的每一行按照给定的模式(patter)进行匹配查找. 一.find命令 基本格式:find  path expression 1.按照文件名查找 (1)find / -

Linux---find文件查找命令

在Linux下文件查找命令有两个---locate和find 一.locate 命令 只对其生成的数据库经行遍历(生成数据库的命令updatedb),速度快但是locate只能对 文件进行模糊匹配,精度不高,非实时的 -i: //查找文件的时候不区分大小写实例:locate -Ipasswd -n://只显示查找结果的前n行   实例:locate -n 5 passwd 查询之前需要执行   updatedb命令 二.find命令 实时.精确.支持众多查找标准.遍历指定目录中的所有文件完成查找

linux下find和locate文件查找命令详解

文件查找命令: locate命令特点 1.非实时,模糊匹配,查找是根据全系统文件数据库进行的: 2.updatedb, 手动更新生成文件数据库,默认第天凌晨4点02分更新数据库 3.速度快 find命令特点: 1.实时 2.精确 3.支持众多查找标准 4.搜索指定目录中的所有文件完成查找,但速度慢: 格式: find 查找路径 匹配标准 查找到以后的处理运作 查找路径:默认为当前目录 匹配标准:默认为指定路径下的所有文件 处理运作:默认为显示 匹配标准: -name '文件名':对文件名作精确匹

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来执

find——文件查找命令 linux一些常用命令

find 命令eg: 一般文件查找方法: 1.  find /home -name file  ,  在/home目录下查找文件名为file的文件2.  find /home -name '*file*'  ,  在/home目录下查找文件名包含file的文件3.  find /home -name 'file*'  ,  在/home目录下查找以file开头的文件名的文件4.  find /home -size 512c  ,    在/home目录下查找512kb大小的文件5.  find

Linux下的文件查找命令——find

Linux下几个常见的文件查找命令: which       查看可执行文件的位置 whereis    寻找特定文件,查看文件的位置 locate       配合数据库查看文件位置 find          实际搜寻硬盘查询文件名称 通常情况下find命令并不是很常用,大家都优先使用whereis和locate命令来查找,因为whereis和locate命令都是利用数据库来查找文件所在,并没有实际查询硬盘,所以速度很快,节省时间.但是我们的find命令依然很强大,它的查找条件相当多,对于用

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

转自:http://blog.csdn.net/cxylaf/article/details/4069595 转自http://www.linuxsir.org/main/?q=node/137 Linux文件查找命令find,xargs详述 总结:zhy2111314来自:LinuxSir.Org整理:北南南北摘要: 本文是find 命令的详细说明,可贵的是针对参数举了很多的实例,大量的例证,让初学者更为容易理解:本文是zhyfly兄贴在论坛中:我对本文进行了再次整理,为方便大家阅读: 目录