locate 搜索命令
搜索格式:locate 文件名
在后台数据库中按文件名称进行搜索,搜索速度快
第一次执行此命令时可能会出现:locate: can not stat () `/var/lib/mlocate/mlocate.db': 没有那个文件或目录
解决方法:首先执行,updatedb,执行完成后,locate命令即可正常执行
举例:locate install.log
新建的文件不能使用locate查找到,此时需更新数据库,才可以查看
更新数据库命令:updatedb
切换到根目录[root@localhost /]#
输入 vi etc/updatedb.conf 即可打开locate的搜索规则配置文件
当值为yes时,一下规则全部生效
PRUNE_BIND_MOUNTS = "yes"
PRUNEFS = "9p afs anon_inodefs auto autofs bdev binfmt_misc cgroup cifs coda configfs cpuset debugfs devpts ecryptfs exofs fuse fusectl gfs gfs2 hugetlbfs inotifyfs iso9660 jffs2 lustre mqueue ncpfs nfs nfs4 nfsd pipefs proc ramfs rootfs rpc_pipefs securityfs selinuxfs sfs sockfs sysfs tmpfs ubifs udf usbfs"
PRUNENAMES = ".git .hg .svn"
不会查找以下文件夹中的文件
PRUNEPATHS = "/afs /media /net /sfs /tmp /udev /var/cache/ccache /var/spool/cups /var/spool/squid /var/tmp"
文件搜索命令:whereis
特点:用于搜索命令所在的路径以及帮助文档所在的位置,不能搜索用户自己创建的文件等信息。
选项:
-b:只查找可执行文件
-m:只查找帮助文件
文件搜索命令:which
特点:能看到命令的路径,如果有别名,还能看到别名的说明。
whereis和which不能看到shell命令,只能看到外部安装的命令。
$PATH说明:类似于Windows中的环境变量,执行命令的时候都要在path定义的目录中去寻找。
path环境变量:定义的是系统搜索命令的路径
[root@localhost~]# echo $PATH
/usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
所以像ls这样的命令就可以不用加路径(/bin/ls)执行了。
find搜索命令
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:在 文件 当中搜索符合条件的 字符串,使用 正则表达式 (包含)匹配