find命令是linux下一个强悍的查找命令。与locate命令相比,它须要遍历c盘文件,因而查找速率较慢,但正因这般,它的实时性比locate好得多。另外一方面,find命令的查找条件比locate丰富得多。
以名称为条件
最常用的估计就是以文件名为条件了,涉及参数-name,-iname,比如:
当前目录下查找以sort开头的文件:
$ find /Users/pobing/Pobing -iname 'T.txt'
/Users/pobing/Pobing/t.txt
$ find /Users/pobing/Pobing -name 't*'
/Users/pobing/Pobing/t1.txt
/Users/pobing/Pobing/t2.txt
/Users/pobing/Pobing/t.txt
以权限为条件
有时侯须要查找特定权限的文件,可以使用-perm参数,比如查找当前目录下权限为777的文件:
$ find /Users/pobing/Pobing -perm 777
/Users/pobing/Pobing/t.txt
以文件类型为条件
涉及参数-type,比如要查找当前目录下的符号链接文件:
$ find /Users/pobing/Pobing -type d
/Users/pobing/Pobing
/Users/pobing/Pobing/t3
常有参数有
f 普通文件
d 目录
b 块设备文件
c 字符设备文件
l 符号链接
s 套接字
p 管道文件
以文件大小为条件
参数为-size
$ find /Users/pobing/Pobing -size +1k
/Users/pobing/Pobing/t2.txt
常用参数有
k 千字节
M 兆字节
G 吉字节
c 字节
b 块,一般为512字节
w 字大小,两个字节
以归属为条件
涉及参数-user,-nouser,-group,-nogroup等,比如:
find ./ -user root #查找当前目录下root用户的文件
find ./ -nouser #查找当前目录下root用户的被删除的文件
-grouplinux下find命令的使用,-nogroup类似的用法,只不过条件是用户组。
以时间为条件
涉及参数-mtime,-atimelinux移植,-ctime,-newer,-anewer,-cnewer,-amin,-cmin等,比如:
find ./ -mtime 3 #查找3天前更改过的文件
find ./ -mtime -3 #查找3天内更改过的文件
find ./ -mtime 0 #查找今天更改过的文件
find ./ -newer sort.txt #查找比sort.txt修改时间更新的文件
find ./ -anewer sort.txt #查找比sort.txt访问时间更新的文件

find ./ -amin 5 #查找5分钟之前访问过的文件
注:
atime 最后访问时间
mtime 最后修改时间
ctime 最后修改时间,这里包括属性和权限
exec
-exec参数前面跟的是command命令,它的中止是以;为结束标志的,所以这句命令前面的分号是不可缺乏的linux命令vi,考虑到各个系统短发号会有不同的意义,所以上面加反斜杠。
{}花括弧代表后面find查找下来的文件名。
使用find时,只要把想要的操作写在一个文件里,就可以用exec来配合find查找,很便捷的。在有些操作系统中只容许-exec选项执行例如ls或ls-l这样的命令。大多数用户使用这一选项是为了查找旧文件并删掉它们。建议在真正执行rm命令删掉文件之前,最好先用ls命令看一下,确认它们是所要删掉的文件。exec选项旁边跟随着所要执行的命令或脚本,之后是一对儿{},一个空格和一个,最后是一个分号。为了使用exec选项,必需要同时使用print选项。假如验证一下find命令,会发觉该命令只输出从当前路径起的相对路径及文件名。
#find /home/data/mydb/log/ -name 'slow*' -o -name '*bin*' -exec ls -al {} ;
-rw-rw---- 1 mysql mysql 1073742330 Sep 30 15:42 /home/data/mydb/log/mysql-bin.000020
-rw-rw---- 1 mysql mysql 180 Oct 8 10:04 /home/data/mydb/log/mysqld-relay-bin.index
-rw-rw---- 1 mysql mysql 396327289 Oct 10 10:23 /home/data/mydb/log/mysql-bin.000022
-rw-rw---- 1 mysql mysql 111 Oct 8 10:04 /home/data/mydb/log/mysql-bin.index
find/logs -type f -mtime +5 -exec rm {} \ ;
在Shell中用任何方式删掉文件之前,应该先查看相应的文件,一定要当心使用例如mv或rm的命令。可以使用安全模式-oklinux下find命令的使用,它将在对每位匹配到的文件进行操作之前提示你。
find . -name "*.log" -mtime +5 -ok rm {} \ ;
按[y]键删除文件,按[n]键不删除。
本文原创地址:https://www.linuxprobe.com/lxfmlgjyfzwe.html编辑:刘遄,审核员:暂无