文件搜索命令
locate命令
- 格式:locate 文件名
- locate命令是在后台数据库中按文件名搜索,因此搜索速度快。
- 系统数据库一天才更新一次,因此你新建一个文件,无法使用locate命令搜索到
- 可以使用updatedb命令强制更新数据库
- 后台数据库在/var/lib/mlocate中,不同linux系统版本,该数据库名可能不同
- locate按照/etc/updatedb.conf这个配置文件的配置来进行搜索
/etc/updatedb.conf
find命令
格式:find [搜索范围] [搜索条件]
例如:find / -name filename(在根目录下搜索文件名为filename的文件)
注意:
1. 避免大范围搜索,会非常耗费系统资源
2. find是在系统当中搜索符合条件的文件名(即精确匹配)。如果需要模糊查询,使用通配符进行匹配
linux中的通配符:
- * 匹配任何字符,如find \ -name “hehe*”
- ? 匹配任意一个字符
- [] 匹配任意一个中括号内的字符,如[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的区别
- find完全匹配,使用通配符模糊匹配,grep是模糊匹配,可以使用正则表达式进行匹配
- find是在系统中查找文件,grep是在文件中查找字符串
命令搜索命令
用于搜索命令的命令,比如搜索ls这个命令在什么地方,可以用 whereis ls
whereis命令
- 只能搜索命令
- -b 只查找可执行文件
- -m 只查看帮助文档所在位置
which命令
- 显示命令所在位置和别名
- 如果没有别名,则只显示位置
注意:并不是所有的命令都能找到。比如cd命令,因为cd命令是shell中自带的命令,因此不需要另外的可执行文件,所以找不到
(但是我在使用阿里云系统CentOS找cd命令可以找到,可能跟linux版本也有关系)
环境变量
echo $PATH
什么是环境变量?
环境变量就是用户操作的环境,原本我们想执行命令,需要带上命令的绝对路径,比如要执行ls,需要执行/usr/bin/ls,这样很麻烦,所以定义了环境变量。
当我们执行ls时,系统就会去环境变量指定的目录下找有没有这个命令,如果有,就执行它,所以我们才可以不打绝对路径
因此,如果你要执行你自己定义的命令,就需要输入路径,如果想不输入路径,就要把路径配置到环境变量中
在windows系统下也是一样的。