1、文件搜索命令locate(定位,查找)
最大的好处,速度快
格式: locate 文件名
返回文件的路径
搜索方式:在后台数据库中按照文件名搜索,每天更新一次
因此新建的文件往往要第二天才能搜索出来
但是也可以强行更新数据库 执行命令updatedb既可以
数据库的位置 /var/lib/mlocate(版本不同位置不同)
搜索的配置文件:/etc/updatedb.conf 其中指定有些目录
不参与搜索 比如/etc/temp
缺点:只可以按照文件名来搜索
例子:locate javatest
2、命令搜索命令whereis 与which
whereis搜索命令的所在位置,不搜索文件
-b 只查看可执行文件所在位置
-m 只查看帮助文档所在位置
which 搜索命令的所在位置,还可以查看别名linux常用命令,不搜索文件
两种搜索在path环境路径下搜索 echo $PATH
例子:whereis ls which ls
3、find(全部搜索,每一个文件名)
功能非常的强大,但是比较耗费资源
因此,尽量避免大范围的查询
格式:find 搜索范围 搜索条件
find / -name test 在根目录下搜索
搜索的内容要和文件名一模一样
如果要搜更多 则需要模糊匹配(*可以实现)匹配内容写在""中
*匹配任意内容(多个字符)
?匹配任意单个字符
[]匹配中括号中的任意一个字符
选项参数:
-name 按照文件名
-iname 文件名不区分大小写
-user 按照所有者搜索 find /root -nouser 没有所有者文件
内核产生linux常用命令,外来文件之外的所有文件都需要有所有者
-mtime 查找指定时间修改的文件
-atime 查找指定时间被访问文件
-ctime 查找指定时间文件属性改变的文件
参数-10 10天之内 +10 10天之前 10第10天(注意都是过去时)
-size 按照文件大小
find . -size +25k(+25k大于25k 兆是大写M 不写单位表示数据块(扇区数据块512byte).标识当前目录)
-inum 按照指定的i节点来搜索文件
-a (and) 逻辑与 两个条件都满足
-o (or) 逻辑或
-exec(中间添加第二条命令比如 ls,rm -rf) {} \; 命令1的结果让命令2来处理
例子:
find . -name test
find . -name test.gz
find . -name "*" 全部
find . -name "*.gz" 该目录下全部以gz结尾文件
find . -atime -10
find . -size -10k 10kb以下
find . -size -100M 10M以上
find . -size -10k -a -atime -10
find . -size -10k -a -atime +10
find . -name "*" -a -size -10k -exec ls -lhi {} \;(\前面一定要有空格)
4、grep
格式:grep 选项 字符串 文件名 在文件中查找包含关键字的字符串行
匹配需要正则表达式匹配
例子:grep "size" 文件名
-v 取反
搜索匹配是文件名 则用通配符 通配符是完全匹配
搜索文件中的内容 则使用正则表达式包含匹配
例子:
grep "log" install.log
find与grep的区别
find是查找匹配文件
grep是文件中匹配字符串