linux查找文件locate,grep,find
查找文件一般有以下几个命令
which 查看可执行文件的位置
whereis 查看可执行文件的位置及相关文件
locate 配合数据库缓存,快速查看文件位置
grep 过滤匹配,他是一个文件搜索工具
find 查找相关文件
which cd 用于查找命令的位置
whereis cd 输出命令相关的目录和配置文件
locate 速度快,从数据库中查找
- 默认数据库24个小时更新
- 手动更新数据库 updatedb
当我们在用户目录下新建一个文件1.txt, 直接locate 1.txt是查找不到的 这时就要更新一下数据库updatedb,现在就可以找到创建的文件了
grep用于查找文件中的内容
grep [选项] 字符串 文件名 # 在文件当中匹配符合条件的字符串 选项: -i 忽略大小写 -v排除指定字符串(取反)
-n 显示行号
匹配一个词:
grep word filename
将文件中,没有word的那行取出来,并显示行号
grep -nv word filename
从多个文件里匹配,并显示行号:
grep -n word filename1 filenam2 filename3
查看两个文件中共同存在的行,并显示行号 grep -nxf 1.txt 11.txt 查看a.txt的文件比b.txt的文件多出来的部分 grep -vxf b.txt a.txt
查找11.txt文件中是否有某些行的开头是数字1 grep ^1 11.txt 查找11.txt文件中是否有某些行的结尾是数字1 grep 1$ 11.txt 1.txt
以递归的方式查找符合条件的文件, 查找/home/sunlizhao目录下所有包含11111的文件 grep -r 11111 /home/sunlizhao/
find
按照文件名搜索
find /home/ -name ok.txt
- 避免大范围搜索,会非常耗费系统资源
严格区分大小写,如果要进行模糊查询,就要用到通配符
* 匹配任意内容 ? 匹配任意一个字符 [] 匹配任意一个中括号内的字符
find /root -iname install.log #搜索名称不区分大小写
find /root -user root #按照所有者搜索 find /root -nouser #查找没有所有者的文件(内核产生或者外来文件)
时间搜索
find /var/log/ -mtime +10 #查找10天前修改的文件 -10 10天内修改文件 10 10天当前修改的文件 +10 10天前修改的文件
- atime 文件访问时间
- ctime 改变文件属性
- mtime 修改文件内容
查找某个目录下四天之内 内容被修改的文件
大小搜索
find . -size 25k #查找文件大小是25kb文件 -25k 小于25kb的文件 25k 等于25kb的文件 +25k 大于25kb的文件
逻辑搜索
find . -size +25k -a -size -50k
# 查找当前目录下大于20k并且小于50kb的文件
- -a and逻辑与,两个条件都满足
- -o or 逻辑或, 两个条件满足一条即可
查找出某个目录小于1k,大于40M的文件