百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 优雅编程 > 正文

Linux文件查找

sinye56 2024-11-23 22:16 10 浏览 0 评论

在 Linux 下通常 find 不很常用的,因为速度慢(find是直接查找硬盘),通常我们都是先使用 whereis 或者是 locate 来检查,如果真的找不到了,才以 find 来搜寻。 为什么呢?这是因为 Linux 系统会将系统内的所有文件都记录在一个数据库文件里面, 而当使用 whereis 或者是 locate 时,都会以此数据库文件的内容为准, 因此,有的时候你还会发现使用这两个运行档时,会找到已经被删除的文件,而且也找不到最新的刚刚创建的文件,这就是因为这两个命令是由数据库当中的结果去查找文件的所在,更多与这个数据库有关的说明,请参考 locate 命令。

whereis [-bmsu] 文件或目录名

-b    :只找 binary 格式的文件
-m    :只找在说明档 manual 路径下的文件
-s    :只找 source 来源文件
-u    :搜寻不在上述三个项目当中的其他特殊文件

locate [-ir] keyword

-i  :忽略大小写的差异;
-r  :后面可接正规表示法的显示方式

使用locate的时候可以直接在后面输入文件的部分名称就能够得到结果。但是,这个命令寻找的数据是由已创建的数据库 /var/lib/mlocate 里面的数据查找到的,而数据库默认每天执行一次(每个distribution不同),所以当你新建文件后查找该文件,那么 locate 会告诉你“找不到”,因为必须更新数据库。

我们可以使用 updatedb 这个命令,它根据 /etc/updatedb.conf 的设置去查找文件系统盘内的文件名,并更新 /var/lib/mlocate 内的数据库文件。

find [PATH] [option] [action]

1. 与时间有关的选项

共有 -atime, -ctime 与 -mtime ,以 -mtime 说明

-mtime  n :n 为数字,意义为在 n 天之前的“一天之内”被更动过内容的文件;
   -mtime +n :列出在 n 天之前(不含 n 天本身)被更动过内容的文件档名;
   -mtime -n :列出在 n 天之内(含 n 天本身)被更动过内容的文件档名。
   -newer file :file 为一个存在的文件,列出比 file 还要新的文件档名

2. 与使用者或群组名称有关的参数

-uid n :n 为数字,这个数字是使用者的帐号 ID,亦即 UID ,这个 UID 是记录在
        /etc/passwd 里面与帐号名称对应的数字。这方面我们会在第四篇介绍。
-gid n :n 为数字,这个数字是群组名称的 ID,亦即 GID,这个 GID 记录在
        /etc/group,相关的介绍我们会第四篇说明~
-user name :name 为使用者帐号名称喔!例如 dmtsai 
-group name:name 为群组名称喔,例如 users ;
-nouser    :寻找文件的拥有者不存在 /etc/passwd 的人!
-nogroup   :寻找文件的拥有群组不存在於 /etc/group 的文件!
            当你自行安装软件时,很可能该软件的属性当中并没有文件拥有者,
            这是可能的!在这个时候,就可以使用 -nouser 与 -nogroup 搜寻。

3. 与文件权限及名称有关的参数

-name filename:搜寻文件名称为 filename 的文件;
-size [+-]SIZE:搜寻比 SIZE 还要大(+)或小(-)的文件。这个 SIZE 的规格有:
               c: 代表 byte, k: 代表 1024bytes。所以,要找比 50KB
               还要大的文件,就是“ -size +50k ”
-type TYPE    :搜寻文件的类型为 TYPE 的,类型主要有:一般正规文件 (f),
               装置文件 (b, c), 目录 (d), 连结档 (l), socket (s), 
               及 FIFO (p) 等属性。
-perm mode  :搜寻文件权限“刚好等於” mode 的文件,这个 mode 为类似 chmod
             的属性值,举例来说, -rwsr-xr-x 的属性为 4755 !
-perm -mode :搜寻文件权限“必须要全部囊括 mode 的权限”的文件,举例来说,
             我们要搜寻 -rwxr--r-- ,亦即 0744 的文件,使用 -perm -0744,
             当一个文件的权限为 -rwsr-xr-x ,亦即 4755 时,也会被列出来,
             因为 -rwsr-xr-x 的属性已经囊括了 -rwxr--r-- 的属性了。
-perm +mode :搜寻文件权限“包含任一 mode 的权限”的文件,举例来说,我们搜寻
             -rwxr-xr-x ,亦即 -perm +755 时,但一个文件属性为 -rw-------
             也会被列出来,因为他有 -rw.... 的属性存在!

4. 额外可进行的动作

-exec command :command 为其他命令,-exec 后面可再接额外的命令来处理搜寻到的结果。
-print        :将结果列印到萤幕上,这个动作是默认动作!

将找到的文件使用 ls -l 列出来~

find / -perm +755 -exec ls -l {} \; ? 那个 -exec 后面的 ls -l 就是额外的命令,命令不支持命令别名, 所以仅能使用 ls -l 不可以使用 ll 。

  • {} 代表的是“由 find 找到的内容”,find 的结果会被放置到 {} 位置中;
  • -exec 一直到 \; 是关键字,代表 find 额外动作的开始 (-exec) 到结束 (\;) ,在这中间的就是 find 命令内的额外动作。 在本例中就是“ ls -l {} ”;
  • 因为“ ; ”在 bash 环境下是有特殊意义的,因此利用反斜线来转义。

另外,find还可以使用通配符来查找文件。

find /etc -name '*httpd*'

搜索公众 CoderMeng 号,获取更多干货文章

相关推荐

程序员:JDK的安装与配置(完整版)_jdk的安装方法

对于Java程序员来说,jdk是必不陌生的一个词。但怎么安装配置jdk,对新手来说确实头疼的一件事情。我这里以jdk10为例,详细的说明讲解了jdk的安装和配置,如果有不明白的小伙伴可以评论区留言哦下...

Linux中安装jdk并配置环境变量_linux jdk安装教程及环境变量配置

一、通过连接工具登录到Linux(我这里使用的Centos7.6版本)服务器连接工具有很多我就不一一介绍了今天使用比较常用的XShell工具登录成功如下:二、上传jdk安装包到Linux服务器jdk...

麒麟系统安装JAVA JDK教程_麒麟系统配置jdk

检查检查系统是否自带java在麒麟系统桌面空白处,右键“在终端打开”,打开shell对话框输入:java–version查看是否自带java及版本如图所示,系统自带OpenJDK,要先卸载自带JDK...

学习笔记-Linux JDK - 安装&配置

前提条件#检查是否存在JDKrpm-qa|grepjava#删除现存JDKyum-yremovejava*安装OracleJDK不分系统#进入安装文件目...

Linux新手入门系列:Linux下jdk安装配置

本系列文章是把作者刚接触和学习Linux时候的实操记录分享出来,内容主要包括Linux入门的一些理论概念知识、Web程序、mysql数据库的简单安装部署,希望能够帮到一些初学者,少走一些弯路。注意:L...

测试员必备:Linux下安装JDK 1.8你必须知道的那些事

1.简介在Oracle收购Sun后,Java的一系列产品就被整合到Oracle官网中,打开官网乍眼一看也不知道去哪里下载,还得一个一个的摸索尝试,而且网上大多数都是一些Oracle收购Sun前,或者就...

Linux 下安装JDK17_linux 安装jdk1.8 yum

一、安装环境操作系统:JDK版本:17二、安装步骤第一步:下载安装包下载Linux环境下的jdk1.8,请去官网(https://www.oracle.com/java/technologies/do...

在Ubuntu系统中安装JDK 17并配置环境变量教程

在Ubuntu系统上安装JDK17并配置环境变量是Java开发环境搭建的重要步骤。JDK17是Oracle提供的长期支持版本,广泛用于开发Java应用程序。以下是详细的步骤,帮助你在Ubuntu系...

如何在 Linux 上安装 Java_linux安装java的步骤

在桌面上拥抱Java应用程序,然后在所有桌面上运行它们。--SethKenlon(作者)无论你运行的是哪种操作系统,通常都有几种安装应用程序的方法。有时你可能会在应用程序商店中找到一个应用程序...

Windows和Linux环境下的JDK安装教程

JavaDevelopmentKit(简称JDK),是Java开发的核心工具包,提供了Java应用程序的编译、运行和开发所需的各类工具和类库。它包括了JRE(JavaRuntimeEnviro...

linux安装jdk_linux安装jdk软连接

JDK是啥就不用多介绍了哈,外行的人也不会进来看我的博文。依然记得读大学那会,第一次实验课就是在机房安装jdk,编写HelloWorld程序。时光飞逝啊,一下过了十多年了,挣了不少钱,买了跑车,娶了富...

linux安装jdk,全局配置,不同用户不同jdk

jdk1.8安装包链接:https://pan.baidu.com/s/14qBrh6ZpLK04QS8ogCepwg提取码:09zs上传文件解压tar-zxvfjdk-8u152-linux-...

运维大神教你在linux下安装jdk8_linux安装jdk1.7

1.到官网下载适合自己机器的版本。楼主下载的是jdk-8u66-linux-i586.tar.gzhttp://www.oracle.com/technetwork/java/javase/downl...

window和linux安装JDK1.8_linux 安装jdk1.8.tar

Windows安装JDK1.8的步骤:步骤1:下载JDK打开浏览器,找到JDK下载页面https://d.injdk.cn/download/oraclejdk/8在页面中找到并点击“下载...

最全的linux下安装JavaJDK的教程(图文详解)不会安装你来打我?

默认已经有了linux服务器,且有root账号首先检查一下是否已经安装过java的jdk任意位置输入命令:whichjava像我这个已经安装过了,就会提示在哪个位置,你的肯定是找不到。一般我们在...

取消回复欢迎 发表评论: