一:find : 查找文件精确,但是速度慢,资源消耗高,通过遍历硬盘来查找
find可以从文件名、读取修改时间、大小、类型等等来筛选文件,可以完成日常几乎所有的查找需求。
1:基本语法:find [目录] 条件 (如果不写目录,则默认从当前目录查找)
2:常用参数:
①:时间:-newer file 比file所指的文件还要新的文件
②:大小:-size
③:所有者、所属组 -user name 所有者用户名称是name的文件
-group name 所有者用户组群名称是name的文件
④:权限:-perm
3:例子:
①:find /tmp/ -name 'shadow*' 找到/tmp 目录下所有以shadow开头的文件
②:find /tmp/ -name '*shadow*' 找到/tmp 目录下所有包含shadow的文件
③:find ./ -size +1M 找到当前目录下大于1M的文件
④:find ./ -perm +300 找到权限有w或有x或有wx的
④:find ./ -perm -300 找到权限必须有wx,即只能是wx或rwx
⑤:find ./ -type d 文件类型为目录的
⑥:find ./ ! -type d 文件类型不为目录的
⑦:find ./ -user student 所有人为student的文件
⑧:find ./ -user student or -groupstudent 所有人或所属组为student的文件
⑨:find ./ -user student -groupstudent 所有人和所属组都为student的文件
4:特殊用法:再找到的文件上执行命令
①:基本语法:find 目录 条件–OK|-exec 命令 {}空格\ ;
②:例子:找到/etc、目录下所有以.conf结尾的文件,备份这些文件给这些文件加上.org的后缀。 find /etc/ -name “*.conf” –execcp {} {}.org \;
二:locate 有自己的数据库,结合数据库来查找文件的位置只适合快速查找,不精确
1:基本语法:locate 文件或者目录名称
2:例子:locatepasswd
3:注意:创建新文件后需要更新locate的数据库(/var/lib/mlocate/mlocate.db),用update命令,并不是所有的文件都更新到数据库,在/etc/updatedb.conf记录了哪些内容不会被更新到数据库中
三:whereis whereis可以找到可执行命令和man page
1:基本语法: whereis [-bmsu] 文件或者目录名称
2:参数说明:
-b : 只找二进制文件
-m: 只找在说明文件manual路径下的文件
-s : 只找source源文件
-u : 没有说明文档的文件
3:例子:
whereispasswd 将和passwd文件相关的文件都查找出来
四:which 可 以找到可执行文件和别名(alias)
1:基本语法:which 可执行文件名称
2:例子: which passwd which是通过 PATH环境变量到该路径内查找可执行文件,所以基本的功能是寻找可执行文件