文件搜索命令包含以下几种:
- 文件搜索命令 locate
- 命令搜索命令 whereis 与 which
- 文件搜索命令 find
- 字符串搜索命令 grep
- find 命令与 grep 命令的区别
1、文件搜索命令locate命令
- 与 find 命令相比,速度更快,它是在后台数据库(/var/lib/mlocate)中按文件名搜索;因此新建的文件需要更新数据库才能搜索成功
- 功能单一,只能搜索文件名
语法:
locate 文件名
updatedb 更新数据库(在新建文件后可以手动更新,也可以自动更新)
locate locate 查找与locate相关的命令,查看数据库名称
/etc/updatedb.conf 配置文件:
- locate 命令搜索时会遵循如下限制(当为yes时),因此比如在 /tmp 目录下的文件就搜索不到
- PRUNE_BIND_MOUNTS = “yes”:开启搜索限制
- PRUNEFS = :搜索时,不搜索的文件系统
- PRUNENAMES =:搜索时,不搜索的文件类型
- PRUNEPATHS =:搜索时,不搜索的路径
2、命令的命令 whereis
whereis 命令用于搜索命令所在路径及帮助文档所在位置,只能搜索系统命令,不能搜索文件/目录
语法:
whereis 命令名
选项:
-b:只查找可执行文件
-m:只查找帮助文档
搜索ls命令所在位置和帮助文档所在位置:
/bin/ls:ls命令所在位置,后面的为帮助文档
3、which 命令
which 命令用于 搜索命令所在位置及命令别名
语法:
which 命令
shell 自带的命令不能通过 whereis 和 which 查看,如 cd
PATH环境变量:
定义的是系统搜索命令的路径,当执行命令时,系统会在 PATH下的路径去寻找并执行命令,可用 echo $PATH 查看这些路径;当想运行自己写的脚步或者某个程序时,也可以添加路径
[root@localhost ~]# echo $PATH
/usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
4、find 命令
语法:
find [搜索范围] [搜索条件]
find / -name install.log //根目录搜索会耗费系统资源
- 避免大范围搜索,会非常耗费系统资源
- find 是在系统当中搜索符合条件的文件名,如需要匹配使用通配符匹配,通配符是完全匹配
Linux 中的三种常用通配符:
- *:匹配任意内容
- ?:匹配任意一个字符
- []:匹配任意一个中括号内的字符
- 使用通配符应放在双引号内
find /root -name "ab[cd]" //搜索 abc、abd 的文件
find /root -name "*[cd]" //搜索以 c/d 结尾的文件
find /root -iname install.log //不区分大小写
find /root -user root // 按照所有者搜索
find /root -nouser // 查找没有所有者的文件
ps:Linux 中除了内核(kernel)产生的文件及外部文件没有所有者外,其他的都应有所有者,因此可以用 find /root -nouser 命令查找Linux 中的垃圾文件
find /var/log/ -mtime +10 //查找10天前修改的文件
- -10:10天内的修改文件
- 10:10天当天修改的文件
- +10:10天前修改的文件
- atime:文件访问时间(access)
- ctime:改变文件属性(change)
- mtime:修改文件内容(make)
find . -size 25k // 查找文件大小是25kb的文件,(.表示当前目录),也可以查找(兆M)
ls -i //查找i节点
find . -inum 262422 //查找i节点是262422的文件
- -25k:小于等于25kb的文件
- 25kb:等于25kb的文件
- +25kb:大于25kb的文件
find /etc -size +20k -a -size -50k //查找/etc/目录下,大于20kb且小于50kb的文件
-a and 逻辑与,两个都满足
-o or 逻辑或,两个满足一个即可
ls -lh /etc/mine.types //查看 mine.types 这个文件的详细信息
find /etc -size +20k -a -size -50k -exec ls -lh {} \;
//查找/etc/目录下,大于20kb且小于50kb的文件,并且显示详细信息(将find命令查找出的交给第二天命令处理即(exec 后的命令 ,如 ls -lh))
-exec/-ok 命令 {} \; 对搜索结果执行操作
5、grep 命令
语法:
字符串搜索命令:grep
grep [选项] 字符串 文件名 //在文件中匹配符合条件的字符串
选项:
-i 忽略大小写
-v 排除指定字符串(除...以外的字符串)
grep "size" install.log //搜索 字符串 size 在 install.log中
6、find 与 grep 的区别
- find:在系统中搜索符合条件的文件名,若需要匹配则使用通配符匹配,通配符是完全匹配
- grep:在文件中搜索符合条件的字符串,若需要匹配使用正则匹配,正则是包含匹配
- grep命令时模糊匹配,只要字符串中含要查找的字符串,都会计算在内