您的位置:首页 > 运维架构 > Linux

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

2017-06-25 10:23 771 查看
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 [文件名]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux locate whereis which find