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

Linux文件查找

sinye56 2024-11-23 22:16 1 浏览 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 号,获取更多干货文章

相关推荐

Linux在线安装JDK1.8

首先在服务器pingwww.baidu.com查看是否可以连网然后就可以在线下载一、下载安装JDK1.81、在下载安装的同时做好一些准备工作...

Linux安装JDK,超详细

1、了解RPMRPM是Red-HatPackageManager(RPM软件包管理器)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的,现在包括OpenLinux...

Linux安装jdk1.8(超级详细)

前言最近刚购买了一台阿里云的服务器准备要搭建一个网站,正好将网站的一个完整搭建过程分享给大家!#一、下载jdk1.8首先我们需要去下载linux版本的jdk1.8安装包,我们有两种方式去下载安装...

Linux系统安装JDK教程

下载jdk-8u151-linux-x64.tar.gz下载地址:https://www.oracle.com/technetwork/java/javase/downloads/index.ht...

干货|JDK下载安装与环境变量配置图文教程「超详细」

1.JDK介绍1.1什么是JDK?SUN公司提供了一套Java开发环境,简称JDK(JavaDevelopmentKit),它是整个Java的核心,其中包括Java编译器、Java运行工具、Jav...

Linux下安装jdk1.8

一、安装环境操作系统:CentOSLinuxrelease7.6.1810(Core)JDK版本:1.8二、安装步骤1.下载安装包...

Linux上安装JDK

以CentOS为例。检查是否已安装过jdk。yumlist--installed|grepjdk或者...

Linux系统的一些常用目录以及介绍

根目录(/):“/”目录也称为根目录,位于Linux文件系统目录结构的顶层。在很多系统中,“/”目录是系统中的唯一分区。如果还有其他分区,必须挂载到“/”目录下某个位置。整个目录结构呈树形结构,因此也...

Linux系统目录结构

一、系统目录结构几乎所有的计算机操作系统都是使用目录结构组织文件。具体来说就是在一个目录中存放子目录和文件,而在子目录中又会进一步存放子目录和文件,以此类推形成一个树状的文件结构,由于其结构很像一棵树...

Linux文件查找

在Linux下通常find不很常用的,因为速度慢(find是直接查找硬盘),通常我们都是先使用whereis或者是locate来检查,如果真的找不到了,才以find来搜寻。为什么...

嵌入式linux基本操作之查找文件

对于很多初学者来说都习惯用windows操作系统,对于这个系统来说查找一个文件简直不在话下。而学习嵌入式开发行业之后,发现所用到的是嵌入式Linux操作系统,本想着跟windows类似,结果在操作的时...

linux系统查看软件安装目录的方法

linux系统下怎么查看软件安装的目录?方法1:whereis软件名以查询nginx为例子...

Linux下如何对目录中的文件进行统计

统计目录中的文件数量...

Linux常见文件目录管理命令

touch用于创建空白文件touch文件名称mkdir用于创建空白目录还可以通过参数-p创建递归的目录...

Linux常用查找文件方法总结

一、前言Linux系统提供了多种查找文件的命令,而且每种查找命令都具有其独特的优势,下面详细总结一下常用的几个Linux查找命令。二、which命令查找类型:二进制文件;...

取消回复欢迎 发表评论: