1、按名称或正则表达式查找文件

find ~/Documents -type f -name “*.pdf” #查找后缀为pdf的文件

2、查找不同类型的文件

find . -type d -name “soft*” #查找以soft开头的文件夹

3、按指定的时间戳查找文件

Linux 系统中的 3 个不同的时间戳:

访问时间戳(atime):最后一次读取文件的时间。

修改时间戳 (mtime):文件内容最后一次被修改的时间。

更改时间戳 (ctime):上次更改文件元数据的时间(如,所有权、位置、文件类型和权限设置)

find . -type f -atime +365 #查询超过1年的文件

find . -type f -mtime 5 #查找5天前的文件

find . -type f -ctime +5 -ctime -10 #查找5到10天前的文件

4、按大小查找文件

size选项使我们能够按指定大小查找文件。我们可以将其计量单位指定为以下约定:b:512 字节块(默认)

c:字节

w:双字节字

k:KB

M:MB

G:GB

find . -type f -size +10M -size -1G #查找大小为 10 MB~1 GB 的文件:

5、按权限查找文件

find . -type f -perm 777 #查找当前目录具有 777 权限的文件

6、按所属组、所有者查找文件find ~ -type f -user zhangsan #查找所属者为zhangsan的文件

find ~ -type f -group guest #查找所属组为guest的文件

find /home -type f -nouser #查找属主账户已经被删除(在/etc/passwd中不存在的账户)的文件

7、在找到文件后执行命令

find . -type f -atime +365 -exec rm -rf {} \;

占位符 {} 非常重要,尤其是在您想删除文件时。因为,如果您不使用它,该命令将对所有文件执行(而不是您刚刚通过 find 命令找到的文件)。

-exec 选项后面的命令必须以分号(;)结束。众所周知,转义字符用于去除单个字符的特殊含义。在 Linux 中,反斜杠\用作转义字符。所以我们将它用于分号字符。

按权限查找文件-perm 权限模式:

査找文件权限刚好等于”权限模式”的文件-perm -权限模式:査找文件权限全部包含”权限模式”的文件-perm +权限模式:査找文件权限包含”权限模式”的任意一个权限的文件find . -type f -perm 777 #查找当前目录具有 777 权限的文件

按所属组、所有者查找文件

find . -type f -user zhangsan #查找所属者为zhangsan的

文件find . -type f -group guest #查找所属组为guest的文件

find /home -type f -nouser #查找属主账户已经被删除(在/etc/passwd中不存在的账户)的文件

找到文件后执行命令这里我们主要讲解两个选项”-exec”和”-ok”,这两个选项的基本作用非常相似。我们先来看看 “exec”选项的格式。

1)-exec 选项后面的命令必须以分号(;)结束。众所周知,转义字符用于去除单个字符的特殊含义。在 Linux 中,反斜杠\用作转义字符。所以我们将它用于分号字符。

首先,请大家注意这里的”{}”和”\;”是标准格式,只要执行”-exec”选项,这两个符号必须完整输入。

其次,这个选项的作用其实是把 find 命令的结果交给由”-exec”调用的命令 2 来处理。”{}”就代表 find 命令的査找结果。

find . -type f -atime +365 -exec rm -rf {} \ #找出一年前的文件并删除

占位符 {} 非常重要,尤其是在您想删除文件时。因为,如果您不使用它,该命令将对所有文件执行(而不是您刚刚通过 find 命令找到的文件)。

2)”-ok”选项和”-exec”选项的作用基本一致,区别在于:”-exec”的命令会直接处理,而不询问;”-ok”的命令 2 在处理前会先询问用户是否这样处理,在得到确认命令后,才会执行。例如:

[root@localhost test]# find .-perm 444 -ok rm -rf{}\;

<rm…./test2>?y <-需要用户输入y,才会执行

#我们这次使用rm命令来删除find找到的结果,删除的动作最好确认一下

3)其他找到文件类型为软连接的文件并按列表显示 find . -type l -exec ls -l {} \;

找到后删除 find . -name “*.txt” -print0 | xargs -0 rm -rf

找到后复制 find / -path ‘/etc/ssl/certs’ -prune -o -name *.pem | xargs -i cp {} ./pem

文件分类 find . -type f -print | xargs file

9、逻辑运算符1) -a:and逻辑与find 命令也支持逻辑运算符选项,其中 -a 代表逻辑与运算,也就是 -a 的两个条件都成立,find 搜索的结果才成立。

举个例子:[root@localhost ~]# find.-size +2k -a -type f#在当前目录下搜索大于2KB,并且文件类型是普通文件的文件在这个例子中,文件既要大于 2KB,又必须是普通文件,find 命令才可以找到。

再举个例子:[root@localhost ~]# find.-mtime -3 -a -perm 644#在当前目录下搜索3天以内修改过,并且权限是644的文件2) -o:or逻辑或-o 选项代表逻辑或运算,也就是 -o 的两个条件只要其中一个成立,find 命令就可以找到结果。

例如:[root@localhost ~]#find . -type f -name cat -o -name dog./cat./dog

#在当前目录下搜索文件名要么是cat的文件,要么是dog的文件

-o 选项的两个条件只要成立一个,find 命令就可以找到结果,所以这个命令既可以找到 cangls 文件,也可以找到 bols 文件。

3) -not:not逻辑非

-not是逻辑非,也就是取反的意思。

举个例子:[root@localhost ~]# find.-not -name dog

#在当前目录下搜索文件名不是dog的文件

九、排除某个目录

find 查找路径 -path 排除目录路径find . -path ‘./home’ -prune -o -name *.log

find后面的第一个英文点号.表示当前根路径,-path ./home表示匹配路径为./home的文件夹,-prune表示把前面命令所匹配到的路径排除,不再进入该路径下面继续查找,-o表示或,-name表示查找log后缀的文件,-print表示打印查找结果到命令行终端。

十、不区分大小写

find.-iname abc.txt 和 find . -iname ABC.txt 查找结果一致。

十一、按inode号查找每个文件都有 inode 号,如果我们知道 inode 号,则也可以按照 inode 号来搜索文件。

[root@localhost ~]#ls -i install.log262147 install.log

#知道文件名,则可以用”ls -i”来査找inode号

[root@localhost ~]# find.-inum 262147./install.log

#知道inode号,则可以用find命令来査找文件。

按照 inode 号搜索文件,也是区分硬链接文件的重要手段,因为硬链接文件的 inode 号是一致的。