linux下4种常见的文件搜索命令

1、文件搜索命令locate(定位,查找)
最大的好处,速度快
格式: locate 文件名 
返回文件的路径
搜索方式:在后台数据库中按照文件名搜索,每天更新一次
因此新建的文件往往要第二天才能搜索出来
但是也可以强行更新数据库 执行命令updatedb既可以
数据库的位置   /var/lib/mlocate(版本不同位置不同)
搜索的配置文件:/etc/updatedb.conf 其中指定有些目录
不参与搜索 比如/etc/temp
缺点:只可以按照文件名来搜索
例子:locate javatest
2、命令搜索命令whereis 与which
whereis搜索命令的所在位置,不搜索文件
-b 只查看可执行文件所在位置
-m  只查看帮助文档所在位置
which 搜索命令的所在位置,还可以查看别名,不搜索文件
两种搜索在path环境路径下搜索 echo $PATH
例子:whereis ls     which ls
3、find(全部搜索,每一个文件名)
功能非常的强大,但是比较耗费资源
因此,尽量避免大范围的查询
格式:find 搜索范围 搜索条件
find / -name test    在根目录下搜索
搜索的内容要和文件名一模一样
如果要搜更多 则需要模糊匹配(*可以实现)匹配内容写在""中
* 匹配任意内容(多个字符)
匹配任意单个字符
[] 匹配中括号中的任意一个字符
选项参数:
-name  按照文件名
-iname 文件名不区分大小写
-user  按照所有者搜索 find /root -nouser   没有所有者文件
内核产生,外来文件之外的所有文件都需要有所有者
-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是文件中匹配字符串

你可能感兴趣的:(linux)