当我们想查找某个文件时,我们不知道它所在的路径,怎么办呢,总不能我们将每个文件翻一遍吧,那样的话太费事了。我们可以用以下命令进行查找文件所在的路径。
1.which(寻找“执行文件”)
2.whereis(寻找特定的文件)
3.find(在目录结构中查找文件,并执行指定的操作)。
4.locate(比find高效,依靠数据库查询)
which(可执行文件查询)
参数
-n 指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。
-p 与-n参数相同,但此处的包括了文件的路径。
-w 指定输出时栏位的宽度。
-V 显示版本信息
注意
which是在PATH变量指定的路径中查询,所搜索出来的位置,返回第一个结果。
which后面跟着完整的文件名
-a 表示将查找出来的所有的文件显示出来。问不是显示第一个结果
2.whereis(寻找指定的文件)
whereis [参数] 文件名
参数
-b 只查找二进制格式的文件
-m 只查找manual下的文件
-s 只在源文件中查找
-u 查找以上参数找不到的文件
where比find高效,查找速度快,因为Linux系统会将系统内的所有文件都记录在一个数据库文件里面,而当我们使用whereis 或者locate时,它都会以数据库文件的内容为准。
3.locate
参数
-i 忽略大小写的差异
-r 后面可接正则表达式的显示方式
注意:
它有一定的限制,你明明刚刚创建了了一个文件,为什么找不到呢,这是因为它依靠数据库实现,而我们linux数据库默认的会每天更新一次,所以你的文件有可能没被录入进去,那怎么办呢,我们在locate之前可以先输入"updatedb" 更新数据库。
4.find
参数
1.与时间有关的参数:共有-atime,-ctime,-mtime,因为a-time 和-ctime选项和-mtime选项相似,我们就介绍-mtime选项
-mtime n:n为数字,意义为在n天之前的“一天之内”被该更改过的文件;
-mtime +n: 列出在n天之前(不包括n天本身)被更改过的文件。
-mtime -n:列出在n之内(含n天本身)被修改过的文件。
-newer file:file为一个存在的文件,查找比file还要新的文件。
画一个时间参考线比较好分别
参数:
2.与用户或用户组名有关的参数
-uid n: n为数字,(userid)这个数字是用户的账号ID,即UID,这个UID会与对应的账号名称的数字。
-gid m :n 为数字(groupid)对应组的Id;
-user name : name 为用户账号的名称
-group name: name为用户组名
-nouser :查找文件的所有者不存在的人
-nogroup :与上面对应
列子
a@ubuntu:~$ find -user a
参数
3.与文件权限及名称有关的参数
-name filename 查找文件名为filename的文件
-size[+ -] SIZE 查找比SIZE还要大+还是还要小-的文件。
-type TYPE :查找文件的类型 为TYPE的,类型主要有:一般正规文件(f)、设备文件(b,c)、目录(d),连接文件(l),socket(s)\FIFO(p);
-perm mode 查找文件权限正好为mode如700的文件
+mode为全部包括mode 权限的文件 0744 必须有744这四位才能用
-mode任一文件mode 权限的文件 查777 如果是700就可以