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的文件

原文地址:https://www.cnblogs.com/sunlizhao/p/9580959.html