linux下的Find指令

时间:2023-01-31 12:23:41

为何使用Find

    我们常说linux下皆文件,这在强调Linux下文件操作的重要性的同时,也向我们暗示了linux一个操作系统的组成是由无数个文件构成的。在这些操作系统中有系统本身自带的文件,用户自己的文件,还有共享文件等等。我们有时候经常忘记某份文件放在硬盘中的哪个地方。在微软的WINDOWS操作系统中要查找一份文件是相当简单的事情,只要在桌面上点击“开始”-“搜索”中就能按照各种方式在本地硬盘上,局域网络,甚至在INTERNET上查找各种文件,文档。
而在Linux中我们有两种查找文件的方式:Find和locate。今天我们主要说的是Find。要想使用命令行,我们首先需要做的就是了解这个命令行的格式:
使用格式 : find [指定查找目录] [查找规则] [查找完后执行的行为]。
这里我们要对使用的格式进行以下说明,查找目录很容易理解就是在某一个目录下进行查找,这里如果没有指定查找目录,那么默认在整个系统中进行查找,查找规则:这个也很荣易理解,我们需要对查找进行限定,我们要查找什么样的内容,内容的属性有什么都可以在这里写入。查找完后执行的行为:这里我们可以理解为我们在查找完成后,如何对查找到的信息进行排列而让用户得知。

查找路径 ##

    指定查找目录的时候我们需要注意的一点是,在输入地址时,不仅要用反斜杠隔开还需要加一个空格。相对路径和绝对路径都可以我。例如⽤用.来表⽰示当前目录,⽤用/来表⽰示系统根目录。

查找规则

    查找规则,也就是我们格式中的option。这里介绍几种比较常见的option的命令。
  1. -name 按照名字查找

例:在根目录下查找所有大写字母开头的文件:

[root@localhost ~]# find ./ -name '[A-Z]*' -print 

例:在根目录下查找所有xxxx开头的文件:

[root@localhost ~]# find ./ -name 'hahaha*' -print 
  1. -perm 安装权限查找
    例:在根目录下查找所有权限均为可读可写可执行的文件
[root@localhost ~]# find ./ -name -perm 777 -print 
  1. -prune 不再当前指定的目录下查找
  2. -user 文件属主来查找
    例:查找属主是xxx的文件
[root@localhost .code]# find ./ -user www -type f -print
  1. -group 所属组来查找
    例:查找所属组是xxx的文件
[root@localhost .code]# find ./  -group xxx -type f  -print 
  1. -nouser 查找无有效属主的文件
    例:查找无属主文件

[root@localhost .code]# find / -nouser -type f -print
  1. -type 按照文件类型查找
    首先,文件由下面几种类型:
    b - 块设备⽂文件。
    d - 目录。
    c - 字符设备⽂文件。
    p - 管道⽂文件。
    l - 符号链接⽂文件。
    f - 普通⽂文件。
    例:查找类型为目录的文件

[root@localhost .code]# find . -type d -print

[root@localhost .code]# find . -type d -print

除了上述几种查找的类型外还有一些比较直观地查找方式
1.按时间查找
查找2天内被更改过的文件

[root@localhost .code]# find . mitime+2 -type f -print

这里我们可以很明显地看到一个mitime 我曾在我的上一篇博客中对三个系统时间有过详细地说明这里就不多进行赘述了。
查找一天内被访问的文件

[root@localhost .code]# find . atime-1 -type f -print

查找一天内状态被改变的文件

[root@localhost .code]# find . ctime-1 -type f -print

2.查找大小为xxx的文件
例:查找一个大小为50k的文件

[root@localhost .code]# find ./ -size 50k -print

注:在这里我们也可以查找在某一大小范围内的文件

[root@localhost .code]# find ./ -size -49k -size +50k -print

这是在根目录下查找大小在49k到50k之间的文件

执行命令

在前面我们都可以看到我使用的执行命令是-printf 也就是将搜索到的结果进行打印,但是也存在一些特殊的指令方便我们在查找到文件后进行操作,减少我们的工作量,十分地便捷。
1.查找到某一文件并执行删除操作,删除前确认
[root@localhost .code]# find . -name ‘xxx’ -ok rm {} \;

2.查找到文件后将其备份为xxx文件

[root@localhost .code]# find . -name 'xxx' -exec cp {} {}.txt \;

总结

这里只是简单地对于Find命令进行了一下介绍,指令的如此复杂也间接地暗示了这条命令的强大,所以我们对于find指令要多进行一些操作性地练习,诚然,知识好用够用就行,但是我们依然需要熟练地掌握一些简单的指令,使我们的日常操作能够更加方便。如果文章出现相关问题,希望各位大佬能够指出。