文件查找工具之——find

前言:Linux一切皆文件,在linux的系统中如果我们需要找到所需的文件,除了一步一步慢慢找,还有一种办法就是要使用Linux中查找文件工具命令,能让我们很快定位到我们所需的文件。所以我们必须要学好文件查找工具



一、首先我们先要了解文本搜索和文件查找的区别

文本搜索:根据用户所指定的PATTERN、字符对文本文件中的内容进行过滤和匹配。常用的工具有"grep"、"egrep"、"fgrep"

文件查找:根据文件的各个属性去匹配相对应的文件。常用工具有"find"、"locate"



二、对于文件查找的工具区别

首先我们要了解文件查找的2中方法

1、实时查找:是遍历对所有文件进行条件匹配。常用命令:"find"

优点:能精确查找和匹配,而且能实时查找到最新的文件。

缺点:速度比较慢

2、非实时查找:是根据索引数据库进行查找。常用命令:"locate"

优点:查找速度快

缺点:①非精确查找,而且是属于模糊查找

②必须依赖索引数据库才可以,而且在构建索引时相当占用时间和资源

小贴士:索引数据库的创建更新是在系统空闲时并使用每日任务进行的,所以无法实时找到最新的文件。若想立即更新索引数据库,可以执行命令:updatedb



三、find 用法

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

各参数的默认值:

        • 查找路径:默认为当前路径
        • 查找条件:默认为指定路径下的所有文件
        • 处理动作:默认为显示在屏幕上

1、查找路径

1.1、绝对路径

    [[email protected] ~]# find /tmp/test "*p*"

1.2、相对路径

    [[email protected] tmp]# find ./test "*p*"

2、查找条件

2.1、 -name "指定文件名称"

备注:支持使用globbing(通配符)字符

*:任意长度的任意字符

?:任意单个字符

[]:指定范围内的任意单个字符

[^]:指定范围外的任意单个字符

    [[email protected] tmp]# find /etc/ -name "p*[0-9]*"   表示在/etc/路径下找包含"p"开头并且包含"数字"的所有文件

2.2、-iname "指定文件名称" :查找时不区分大小写,默认是区分大小写的。

    [[email protected] tmp]# find /etc/ -iname "p*"

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

2.4、-group GROUPNAME:查找时根据文件的属组查找

    [[email protected] tmp]# find /home/ -user user1

2.5、-uid UID : 查找时根据文件的属主的UID查找

2.6、-gid GID :查找时根据文件的属组的GID查找

    [[email protected] tmp]# find /home/ -gid 600

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

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

    [[email protected] tmp]# find / -nouser

2.9、-type TYPE :根据文件类型查找

-f:普通文件

-d:目录文件

-l:符号链接

-b:块设备

-c:字符设备

-s:套接字文件

-p:命名管道

    [[email protected] tmp]# find /etc/ -type d -name "p*[0-9]*"

2.10、-size [ + | - ]#UNIT:根据文件大小来查找

UNIT:代表的是单位。常用单位;k,M,G

#   :代表的是数字

+   :代表的是大于

-   :代表的是小于

例子:以 # = 9 , UNIT = k

2.11、-perm [ + | - ] MODE :根据文件权限查找

MODE:代表用户对该文件的权限,即 r(4) ,w(2) ,x(1)

MODE:代表与MODE权限都要精确匹配

+MODE:代表任何一类用户的权限只要包含对其指定的任意一个权限满足即可

-MODE:每一类用户指定的权限都被必须被包含,并且是完全包含

2.12、根据时间戳查找

2.12.1、以"天"为单位

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

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

-ctime [ + | - ] # :根据状态改动时间查找

2.12.2、以"分钟"为单位
                    -amin [ + | - ] # :根据访问时间进行查找

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

-cmin [ + | - ] # :根据状态改动时间查找

例子:  以 # 为 4  使用atime

代表的意思:

+4 :代表大于等于5天前访问过的文件

-4 :代表小于等于4天前访问过的文件

4 :代表4 ~ 5 这一天访问过的文件

2.13、根据组合条件查找

指是在条件语句语句中执行逻辑运算

与:-a        指必须同时满足(默认值就是-a,所以-a可以不填)

或:-o        指满足其中一个即可

非:-not \ !  指条件取反

小贴士:上面例子最后的一个例子也可以使用下面的方法

    [[email protected] test1]# find ./ -not \( -iname "*r*" -o -group tuser602 \)

3、处理动作

3.1、-print: 默认处理动作,显示在在屏幕

3.2、-ls   :相当于 ls -l (备注:在使用于组合条件时会有点问题)

3.3、-exec :运行命令,对查找到的文件执行某个命令

-exec COMMAND{} \;  (备注: \; 表示结束  {} 表示引用了文件的本身)

    [[email protected] test1]# find ./ -perm -001 -exec chmod o-x {} \;  //将权限符合 -001的所有文件权限改成 o-x
    [[email protected] test1]# find ./ -perm +200 -a -type f -a -not -name "*.*" -exec mv {} {}.txt \;  //将当前路径下没有后缀的所有文件都加上.txt后缀

3.4、-ok   :使用交互式执行命令

-ok COMMAND {} \;

小贴士:find 一次性查找所有符合条件的所有文件,并一同传递给-exec或-ok后面所指定的命令;但是,有些命令不能接受过长的参数:因此这时应该使用另一种方法

find | xargs COMMAND   意思是找到一个处理一个

        [[email protected] test1]# find /tmp -name core -type f -print | xargs /bin/rm -f


四、总结

find 的使用格式

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

查找路径:绝对路径,相对路径

查找条件:-name , -iname , -user , -group , -uid , -gid , -nouser , -nogroup , -size ,-perm

根据时间戳查找: -mtime , -ctime , atime , -amin , -mmin , -cmin

根据组合条件查找: -a , -o , -not , !

处理动作: -print , -ls , -exec , -ok

时间: 2024-12-27 22:28:24

文件查找工具之——find的相关文章

Linux 系统之文件查找工具--- locate、 find详解

一.学习Linux为什么要学习文件查找工具? 作为Linux爱好者,或者Linux运维人员经常会遇到要查找某个或者某一类文件的问题,但对于"一切皆文件"的Linux系统来说,如何能够在成千上万的文件中快速精确的定位到我们所需的文件,对我们来说是至关重要的.因此,熟练掌握并运用Linux系统下的文件查找命令是我们快速定位的关键. 本文着重介绍Linux环境下的locate.find文件查找工具 二.文件查找工具locate使用详解 2.1.locate - find files by n

Linux文件查找工具之find “大宝剑”

一.文件查找工具常用软件 locate: locate命令其实是find -name的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/locatedb,这个数据库中含有本地所有文件信息.Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件.为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库. find:     find命令用来在指定目录下查找文件,通过遍历指定的

文件查找工具locate与find

写在前面: 博客书写牢记5W1H法则:What,Why,When,Where,Who,How. 本篇主要内容: ● locate用法 ● 使用find基于文件属性进行查找 locate与find简介: locate与find都是文件查找工具(区别与grep等文本查找工具),尤其是find,可根据文件的诸多属性(如文件大小.属主属组.权限信息.修改时间等),对文件进行实时查找 locate: 1.查找默认数据库文件/var/lib/mlocate/mlocate.db,所以查找速度快,非实时,每天

文件处理工具 gif合成工具 文件后缀批量添加工具 文件夹搜索工具 重复文件查找工具 网页图片解析下载工具等

以下都是一些简单的免费分享的工具,技术支持群:592132877,提供定制化服务开发. Gif动图合成工具 主要功能是扫描指定的文件夹里的所有zip文件,然后提取Zip文件中的图片,并合成一张gif图片,存储到新的路径下,支持设置gif的时间,演示效果如下: 下载地址:gif合成工具 文件批量移动工具 主要功能是将指定文件夹及子文件夹里所有文件,复制到新的文件夹下,可以指定是否删除源文件.以下动图演示效果. 下载地址:文件批量移动工具.exe 文件批量移动工具 主要功能是将指定目录下所有文件按照

Linux下文件查找工具介绍

文件查找工具 locate find locate: 查询系统预建的文件索引数据库      1. /var/lib/mlocate/mlocate.db     2.因为依赖于事先构建的索引,而索引是系统在闲时自动进行的,管理员需要手动更新(updatedb). locate的特点:查找速度快        模糊查找        非实时查找        搜索的是文件的全路径,不仅仅是文件名        可能只搜索用户具备读取和执行权限的目录 基本语法:   -i :不区分大小写的搜索  

linux文件查找工具 -- find

简述: linux中find命令是一种强大的实时查找工具,它通过用户给出的路径,在该路径下的文件系统中进行文件查找.因此在遍历一个较大的文件系统时会比较花费时间,而且find命令占用资源也是比较大的,所以它的工作特点是,查找的速度略慢,但是可以实现精确查找和实时查找.由于用户权限的问题,可能只搜索用户具备读取和执行权限的目录.由于find命令能力很强大所以它的选项也有很多. find命令用法: find命令格式: find [选项] [查找起始路径] [查找条件] [处理动作] find [-H

Linux文件查找工具之find(详解)

find详解 一.find命令是什么? 实时查找工具,遍历指定目录中的所有文件完成查找. 二.find的工作特性: 实时查找 精确查找.支持众多查找标准 查找速度略慢 三.find的用法: find [OPTIONS][查找路径][查找条件][处理动作] (1)查找路径:指定具体的搜索目标的起始路径:默认为当前目录: (2)查找条件:指定的查找标准,可根据文件名.大小.类型.从属关系.权限等标准进行. 根据文件名查找: -name 'FILENAME':对文件名进行精确匹配: 支持支持glob风

20150830-linux文件查找工具

待完善.... 文件查找: 在文件系统上查找符合条件的文件的过程: 文件查找:locate, find locate: 非实时查找工具:依赖于事先构建的索引:索引的构建是在系统较为空闲时自动进行(周期性任务):手动更新此数据库(updatedb):查找速度快:模糊查找: find:实时查找:查找速度略慢:精确查找: find命令: find [OPTION]... [查找路径] [查找条件] [处理动作] 查找路径:默认为当前路径: 查找条件:指定的查找标准,可以根据文件名.大小.属主属组.类型

推荐一个大文件查找工具---WizTree

DB备份.dump.电影等文件多了以后,经常遇到磁盘空间不够用的情况,日积月累本来清晰的目录结构找起来也很费劲,尤其是要查找删除无用的大文件.windows本身那差劲的搜索功能就不提了,从搜索引擎上查找工具,总是提示**零软件可以,比较反感. WizTree 是一个可以用来查找占用大量分区的无用文件和文件夹的查找大文件工具,界面中还会将搜索出来的文件夹从大到小排列,并且还会显示占用百分比.占用空间.文件数量.子文件夹数量等信息,可以直接进行删除等操作,非常方便.下载