linux中文件搜索命令(whereis,locate,which,find)

时间:2023-01-23 16:28:00

linux中的文件搜索命令是最常用的命令之一,然而我却一直分不清楚这四个命令具体的区别有哪些,经过查看一些资料才算弄明白一点。

1、find(精而细):直接从磁盘中搜索文件名称命令所在路径:/bin/find执行权限:所有用户语法:find [搜索范围] [匹配条件]功能:搜索文件eg:find /etc -name init在etc目录下查找名为init的文件,-iname 不区分大小写
find / -size +204800在根目录下查找大于100MB的文件,+n 大于 -n 小于 n 等于,此处的单位为’数据块‘,1数据块为512字节=0.5K
find /home -user tom在home目录下查找所有者为tom的文件,-group 根据所属组查找
find /etc -cmin 5在etc下查找5分钟内被修改过属性的文件和目录,-amin 访问时间 access,-cmin 文件属性(用ls -l能查看到的) change,-mmin 文件内容 modify
find /etc -size +163840 -a -size -204800在etc目录下查找大于80MB小于100MB的文件,-a 两个条件同时满足,-o 两个条件满足任意一个即可
find /etc -name inittab -exec ls -l {} \;在etc下查找inittab文件并显示其详细信息-exec/-ok 命令 {} \; 对搜索结果执行操作-type 根据文件类型查找      f 文件       d 目录      l 软链接文件-inum 根据i节点查找文件

2、locate(快而全,使用updatedb更新数据库):从文件资料库中查找所需文件命令所在路径:/usr/bin/locate执行权限:所有用户语法:locate 文件名 -i 不区分大小写因为这是直接在文件库中查找,而不用遍历每个盘,所以速度比起find快很多注意:文件资料库的信息是定期更新的,所以有可能当你查找某个最新的文件时,没有结果          不过可以使用updatedb命令来手动更新文件库          另外,如果文件存放在/tmp临时目录下,是不会别收录到文件库中的,所以也不会被locate命令搜索到
3、which(小而精):在PATH变量指定的路径中搜索某个系统命令的位置,并返回第一个搜素结果命令所在路径:/usr/bin/which执行权限:所有用户语法:which 命令eg:which passwd     返回:/usr/bin/passwd
4、whereis(简单快速):whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数 -b)、man说明文件(参数 -m)和源代码文件(参数 -s),如果省略参数,则全部返回命令所在路径:/usr/bin/whereis执行权限:所有用户语法:whereis [文件名]