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 号是一致的。
评论 (0)