本指南将解释如何使用find命令。这将帮助您使用各种过滤器和参数搜索系统上的文件。并简要介绍了locate命令,该命令可用于以不同方式搜索文件。按名称搜索文件最直接的方法是按名称搜索。要使用find命令按名称查找文件,可以使用以下语法:find-name"query"这种搜索方法区分大小写。如果要按名称查找文件但忽略大小写,请使用-iname选项:find-iname"query"如果要查找与某个关键字不匹配的所有文件,可以使用-not或!反向搜索:find-not-name"query_to_avoid"find!-name"query_to_avoid"按类型查找您还可以使用-type选项指定要查找的文件类型。搜索/dev目录下记录的b(blockdevice)如下:[root@LinuxProbe~]#find/dev-typeb下面是一些可以用来指定文件类型的选项:f:regularfiled:directoryl:symbolLinkc:characterdeviceb:blockdevice您可以使用以下命令搜索所有以.conf结尾的文件。此示例在/etc目录中搜索匹配文件:[root@LinuxProbe~]#find/etc-typef-name"*.conf"按时间和大小过滤find提供按文件大小和时间方法过滤结果的各种选项.文件大小您可以使用-size参数按文件大小过滤文件。为此,必须在数字末尾添加一个特殊的后缀,指示大小是以字节、兆字节、千兆字节还是其他单位计算的。下面是一些常用的大小后缀:c:bytesk:kilobytesM:megabytesG:gigabytesb:512-byteblocks为了说明,下面的命令将查找/usr目录中的每个文件正好是50c,大于20M的文件,小于20M的文件1M文件:[root@LinuxProbe~]#find/usr-size50c[root@LinuxProbe~]#find/usr-size+20M[root@LinuxProbe~]#find/usr-size-1M文件,Linux存储时间数据关于访问时间、修改时间和更改时间。-atime:AccessTime,文件最后一次读写的时间-mtime:ModificationTime,文件内容最后一次修改的时间-ctime:ChangeTime,文件的inode元数据最后一次修改的时间变了。例如,要查找/usr目录中最近一天内修改过的文件,请运行以下命令:[root@LinuxProbe~]#find/usr-mtime1如果要查找修改过的文件如果最近两天内访问过,您可以运行以下命令:[root@LinuxProbe~]#find/usr-atime-2要查找其元信息最后更改时间超过3天的文件,您可以执行以下操作:[root@LinuxProbe~]#find/usr-ctime+3这些选项还可以指定分钟而不是附带的天数参数,这将给出在一分钟内修改的文件。:[root@LinuxProbe~]#find/var/log-mmin-1按所有者和权限查找您还可以使用-user和-group参数按拥有文件的用户或组搜索文件。要在/var目录中查找chrony用户拥有的文件,请运行以下命令:[root@LinuxProbe~]#find/var-userchrony同样,您可以通过键入指定kmem组在/etc目录中拥有文件:[root@LinuxProbe~]#find/-groupkmem也可以使用-perm选项搜索指定权限的文件:[root@LinuxProber~]#find/var/log-perm644在搜索上执行命令结果您可以使用以下语法使用-exec参数对找到匹配项的所有内容执行任意操作。{}用作占位符以查找匹配文件。这\;让find知道命令在哪里结束。例如在/etc目录下找到*.conf文件,使用ls-l列出文件信息:[root@LinuxProbe~]#find/etc-name"*.conf"-execls-l{}\;使用locate查找文件另一种使用find的方法是locate命令。此命令通常速度更快,可以轻松搜索整个文件系统。在centos8中,mlocate包可以使用yum包管理器安装:[root@LinuxProbe~]#yum-yinstallmlocatelocate比find更快,因为它依赖于一个列出文件系统上所有文件的数据库。该数据库通常使用cron脚本每天更新一次,但也可以使用updatedb命令手动更新。运行下面这个命令:[root@LinuxProbe~]#updatedb例如,如果你搜索关键字“anaconda”,匹配的文件将很快显示出来:[root@LinuxProbe~]#locateanaconda你可以使用-S选项检索有关已存储位置的信息统计信息:[root@LinuxProbe~]#locate-SDatabase/var/lib/mlocate/mlocate.db:8,393目录73,262文件4,632,907字节的文件名1,948,600字节用于存储数据库摘要查找和定位命令是在您的系统上查找文件的有用工具。两者都是功能强大的命令,可以通过管道将它们与其他实用程序组合来增强它们。
