Linux笔记(5)——搜索命令

时间:2021-06-27 17:02:10

文件搜索命令

locate命令

  1. 格式:locate 文件名
  2. locate命令是在后台数据库中按文件名搜索,因此搜索速度快。
  3. 系统数据库一天才更新一次,因此你新建一个文件,无法使用locate命令搜索到
  4. 可以使用updatedb命令强制更新数据库
  5. 后台数据库在/var/lib/mlocate中,不同linux系统版本,该数据库名可能不同
  6. locate按照/etc/updatedb.conf这个配置文件的配置来进行搜索

/etc/updatedb.conf
Linux笔记(5)——搜索命令

find命令

格式:find [搜索范围] [搜索条件]
例如:find / -name filename(在根目录下搜索文件名为filename的文件)

注意:
1. 避免大范围搜索,会非常耗费系统资源
2. find是在系统当中搜索符合条件的文件名(即精确匹配)。如果需要模糊查询,使用通配符进行匹配

linux中的通配符:

  1. * 匹配任何字符,如find \ -name “hehe*”
  2. ? 匹配任意一个字符
  3. [] 匹配任意一个中括号内的字符,如[ab]表示匹配a或者b,“*[ab]”表示匹配任意以a或者b结尾的字符串

find命令常见选项

选项 作用
-name 按照文件名搜索
-iname 不区分大小写
-user 按照所有者搜索
-nouser 搜索没有所有者的文件
1. linux中没有所有者的文件一般是垃圾文件,应删除。
2. 内核产生的文件可能没有所有者,不能删除。
3. 外来文件,如U盘中的文件可能没有所有者
-mtime +10 查找10天前修改的文件
1. -10表示10天内
2. 10表示10天当天
3. +10表示10天前
-atime 文件访问时间
-ctime 改变文件属性的时间
-size 如find / -size 25k(小写的k),按文件大小
1. +25k表示大于25k
2. 25k表示等于25k
3. -25k表示小于25k
4. 单位也可以使用大写的M
-inum 根据i节点查询
-a 表示and,如find / -size +25 -a -size -50k,查找大于25k,小于50k的文件
-o 表示or,使用方法和-a类似

-exec命令

格式:命令1 -exec 命令2 {} \;
作用:将命令1执行的结果交给命令2执行
比如:find /etc -size -10k -exec ls -l {} \; 将查询的结果执行ls -l,即显示查询到的文件的详细信息
注意:只要出现-exec,一定有{} \;

grep命令

假设test文件中有以下内容

123
123456
abc

使用grep “123” test,表示搜索test文件中,包含”123“字符串的行,查询结果为

123
123456

选项

选项 作用
-i 忽略大小写
-v 取相反的结果

find和grep的区别

  1. find完全匹配,使用通配符模糊匹配,grep是模糊匹配,可以使用正则表达式进行匹配
  2. find是在系统中查找文件,grep是在文件中查找字符串

命令搜索命令

用于搜索命令的命令,比如搜索ls这个命令在什么地方,可以用 whereis ls

whereis命令

  1. 只能搜索命令
  2. -b 只查找可执行文件
  3. -m 只查看帮助文档所在位置

Linux笔记(5)——搜索命令

which命令

  1. 显示命令所在位置和别名
  2. 如果没有别名,则只显示位置

注意:并不是所有的命令都能找到。比如cd命令,因为cd命令是shell中自带的命令,因此不需要另外的可执行文件,所以找不到
(但是我在使用阿里云系统CentOS找cd命令可以找到,可能跟linux版本也有关系)

环境变量

echo $PATH
Linux笔记(5)——搜索命令

什么是环境变量?

  1. 环境变量就是用户操作的环境,原本我们想执行命令,需要带上命令的绝对路径,比如要执行ls,需要执行/usr/bin/ls,这样很麻烦,所以定义了环境变量。

  2. 当我们执行ls时,系统就会去环境变量指定的目录下找有没有这个命令,如果有,就执行它,所以我们才可以不打绝对路径

  3. 因此,如果你要执行你自己定义的命令,就需要输入路径,如果想不输入路径,就要把路径配置到环境变量中

  4. 在windows系统下也是一样的。