Linux文件搜索命令

时间:2022-08-21 09:19:48

1、文件搜索命令locate
locate 文件名
在后台数据库中按文件名搜索,搜索速度非常快。
locate命令所搜索的后台数据库:/var/lib/mlocate 默认一天更新一次
当新建一个文件要搜索时,要自己更新数据库 updatedb
可以通过locate locate来找到数据库。
只能搜索文件。
筛选规则在配置文件中,可对其进行修改/etc/updatedb.conf
(whereis与which也遵守该规则)

Linux中.conf一般为配置文件

文件搜索命令:whereis (只能搜索系统命令,不能搜索自己凭空创建的普通文件)
whoami显示当前操作用户 //who am i 显示登录用户
whatis ls ls的作用
选项:
-b:只查找可执行文件
-m:只查找帮助文件

文件搜索命令:which(不仅能看到命令的路径,如果有别名,还能看到别名)
ls =‘ls –color=auto’(ls显示颜色,设置为自动)
whereis和which不能看到shell的默认命令(如:cd),只能看到外部安装的命令。

echo $PATH说明:不光是Linux专有的,Windous重也有,类似于Windows中的环境变量,执行命令的时候都要在path定义的目录中去寻找。
所以像ls这样的命令就可以不用加路径(/bin/ls)执行了。
如果自己写的脚本 在运行时不想要具体的目录 需要在path设置目录

find搜索(避免大范围的搜索,会非常浪费系统资源,建议不在直接在“/”目录下搜索)
格式:find 【搜索范围】【搜索条件】;
例:find /home -name 文件名;
注意:find搜索默认是完全匹配。

如果需要进行模糊查询,需要添加通配符,通配符有以下3种
”匹配任意字符,例:find /home -name “*test”,显示所有名字带test的文件;或例:find /home -name “*”,home目录下的所有文件,包括隐藏文件。
“?”匹配任意一个字符,
“【】”匹配任意一个中括号内的字符,例:find /home -name “test【12】”,显示test1和test2文件;或find /home -name “【12】*”,显示以1和2开头的文件。
组合使用:例:find /home -name “*【12】”,显示所有1和2结尾的文件

find 按文件时间来搜索

find /home -mtime +10 在home目录下,查找10天前修改的文件
find /home -mtime 10 在home目录下,查找10天前当天修改的文件
find /home -mtime -10 在home目录下,查找10天内修改的文件
atime 文件访问时间
ctime 改变文件属性
mtime 修改文件内容

find搜索
find /root -iname test 不区分要搜索的test大小写格式
find /root -user root 搜索root目录下的所有属于root用户的文件
find /root -nouser 没有所属者的文件,liunx中,每个文件都有所属者,如果没有,那么一般都是垃圾文件,但还是有特例的,比如内核产生的文件,就没有所属者,一般在proc和sys目录下;还有外来文件,也就是U盘拷入的文件也会忽略所有者。

find 目录 -size 文件大小
注意:文件大小用小写k和大写M。
-a 表示and
-o 表示or
find /etc -size +20k -a -size -50k -exec ls -lh {} \;
-exec {} \; 固定格式,表示直接对前面的搜索结果进行后面的命令处理

grep [选项] 字符串 文件名 (字符串使用 “” 包围,结果为行记录)
-i 忽略大小写
-v 排除指定字符串

find 命令与 grep 命令的区别

find:在 系统 中搜索符合条件的 文件名,使用 通配符(完全)匹配
grep:在 文件 当中搜索符合条件的 字符串,使用 正则表达式 (包含)匹配