linux下手动更新linux没有locate命令所在数据库的指令updatedb为什么行不通

Linux之locate命令详解 - CSDN博客
Linux之locate命令详解
文件搜索命令:locate(只能搜文件名)
locate 文件名
在后台数据库中安文件名搜索,搜索速度比find更快,但对于刚建立的文件,使用该命令进行查找将会搜索不到所创建的文件,例如:
如果想使刚创建的文件被locate命令搜索到,可以使用updatedb命令,更新mlocate数据库,之后在使用locate命令才能搜索到,否则要等到第二天才能搜索到该文件,该后台数据库默认一天更新一次
数据库所在位置: /var/lib/mlocate
locate默认不搜索包含以下信息的文件:
若是首次使用locate命令发现出现一下问题:
locate: can not stat () `/var/lib/mlocate/mlocate.db': No such file or directory
只需要使用updatedb命令进行更新一下,就不会出现上述问题了
本文已收录于以下专栏:
相关文章推荐
对于初次切换到 Linux 系统的朋友来说,如果想要从命令行界面执行查找文件的任务的话,那么,locate 和 find 是两个需要了解的命令。虽说这两个命令都可以满足查找文件的操作,不过却是各有所长...
locate,定位的意思,作用是让使用者可以快速的搜寻系统中是否有指定的文件。locate 命令特点:1) &locate&的速度比&find&快,因为它并不是真的查找文件,而是查数据库。
2) 新建...
一:locate命令 
  locate命令用于查找文件,它比find命令的搜索速度快,它需要一个数据库,这个数据库由每天的例行工作(crontab)程序来建立。当我们建立好这个数据库后,就可以方便...
locate 让使用者可以很快速的搜寻档案系统内是否有指定的档案。
其方法是先建立一个包括系统内所有档案名称及路径的数据库,之后当寻找时就只需查询这个数据库,而不必实际深入档案系统之...
linux中Find、whereis、locate、which查找文件命令详解
Find是一个非常有效的工具,它可以遍历当前目录甚至于整个文件系统来查找某些文件或目录. 
主要选项: ...
首先查看man which的说明
which - shows the full path of (shell) commands.
在$PATH目录下查找命令的绝对路径,PA...
转自/blog/730280
我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索。这些是从网上找到的资料,因...
locate 可以很快速的搜寻档案系统内是否有指定的档案。其方法是先建立一个包括系统内所有档案名称及路径的索引数据库,当寻找时就只需查询这个索引数据库而不必实际深入档案系统之中。locate 因为是只...
原文地址:http://blog.csdn.net/ysdaniel/article/details/7043298
1、使用locate命令。
locate命令基于数据库...
文件名搜索原理:从后台数据库中进行文件名搜索,不会遍寻整个系统。所以速度较快。缺点也是只搜索文件名。安装
yum install mlocatelocate命令的后台数据库
他的最新文章
讲师:吴岸城
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)在 SegmentFault,解决技术问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
一线的工程师、著名开源项目的作者们,都在这里:
获取验证码
已有账号?
标签:至少1个,最多5个
1.查找执行文件(which/whereis)
which用于从系统的PATH变量所定义的目录中查找可执行文件的绝对路径。比如说想查找passwd这个命令在系统中的绝对路径,使用方法如下:
[root@localhost ~]# which passwd
/usr/bin/passwd
使用whereis也能查到其路径,但是和which不同的是,它不但能找出其二进制文件,还能找出相关的man文件
2.locate与slocate
locate命令能够在文件、程序和目录中查找与提供的搜索项匹配的内容,并把任何匹配的结果依次显示到终端界面上。
locate命令并没有对系统进行实时搜索。实际上,它搜索的是每天自动更新的文件名数据库。因为locate搜索的是早已创建好的数据库,所以搜索结果几乎能够瞬间显示出来。
slocate(代表secure locate)命令的版本更新些,它不会搜索运行slocate命令的用户没有权限查看的目录(例如,如果你不是root用户,那么当用locate搜索时,就不会显示/root目录中的结果)。
因为Linux系统默认是区分大小写的。明确这一点以后,可以加上-i选项,这样执行的就是不区分大小写的搜索,从而既可以找到路径中包含haggard的文件,也可以找到包含Haggard的文件(实际上,也包括HAGGARD、HaGgArD等)。
locate -i haggard
如果只想看前面的x个结果(x是你选择的一个整数),则可以使用-n选项,后面跟着你想要看的结果个数。
$ locate -n 3 pdf
locate命令依赖于一个数据库文件,Linux系统默认每天会检索一下系统中的所有文件,然后将检索到的文件记录到数据库中。在运行locate命令的时候可直接到数据库中查找记录并打印到屏幕上,所以使用locate命令要比find命令反馈更为迅速。在执行这个命令之前一般需要执行updatedb命令(这不是必须的,因为系统每天会自动检索并更新数据库信息,但是有时候会因为文件发生了变化而系统还没有再次更新而无法找到实际上确实存在的文件。所以有时需要主动运行该命令,以创建最新的文件列表数据库),以及时更新数据库记录。下面是使用locate命令来查找httpd.conf文件:
[root@localhost ~]# updatedb
[root@localhost ~]# locate httpd.conf
/etc/httpd/conf/httpd.conf
在任何时候都能够通过运行updatedb,手动更新locate使用的数据库。因为这个命令基本上会为计算机上的每个文件和文件夹编制索引
但这里应该注意一件事:updatedb运行的速度与硬盘中资料的数量以及计算机的处理速度有直接关系。处理器的速度越快、硬盘的速度越快、文件越少,updatedb也就运行得越快。如果CPU很慢,硬盘的转速才有5400RPM,而且还有100万个文件,那就别指望updatedb能快到哪去。如果想知道updatedb的运行花费了多长时间,可以在updatedb前面加上time命令,如下所示:
# time updatedb
在updatedb处理完成以后,time命令就能显示整理好locate数据库花费了多长时间。这个信息很有用,需要记住,可能以后会需要使用updatedb而时间又很紧。
虽然locate命令搜索文件的数据库,使得它的运行速度很快,但要依赖不断更新的数据库;而find命令则可以根据指定的查询条件,轻松地对文件进行搜索。。由于find命令必须分析文件的结构,所以它的速度比locate命令要慢很多,然而可以用find命令完成很多用locate命令无法实现的功能。
在默认情况下,find会自动递归搜索整个目录结构。要在music盘中查找唯一的Shaggs组下的所有MP3文件,如下所示:
$ cd /media/music
$ find . -name Shaggs
需要使用通配符,但为了防止shell以我们不期望的方式解释通配符,就必须用引号把搜索内容括起来。下面就用新改进后的方法再搜索一下:
$ find . -name "*Shaggs*"
find命令的另一重要方面是,搜索结果的格式取决于正在搜索的路径。前面使用的是相对路径,所以结果也是按相对路径给出。如果使用绝对路径(以/作为路径的开始),会发生什么呢?
$ find / -name "*Shaggs*"
/music/Outsider/Shaggs
按用户/用户组搜索
想在music盘中搜索scott拥有的文件吗?使用find命令和-user选项,后面输入用户名(或用户编号,在/etc/passwd中可以找到),如下所示:
$ find . -user scott
查找拥有者不是scott的文件,可能更容易,只要在想取反的选项前面加一个叹号(!)就可以了。
find . ! -user scott
如果想搜索特定用户组拥有的文件,只需使用-group选项,后面输入组的名称或编号。在music盘中,scott应该是拥有者,music则是它属于的用户组。让我们来看看是否有文件不属于music组,如下所示:
$ find . ! -group music
按大小搜索
如果要搜索的文件大小大于10MB,需要在指定的大小前面加一个加号(+);如果要搜索的文件大小小于10MB,则需要在大小前面加一个减号(-),如下所示:
$ find . -size +10M
如果要搜索大型文本文件,可以在数字后面使用c。c将搜索的大小单位修改成字节。在文本文件中一个字符就是一个字节,所以记住选项c的一种简单办法就是,把它与文本文件中的“字符(character)”联系起来记忆。例如,为搜索大文本文件,可以使用以下代码:
$ find /home/scott/documents -size +500000c
4.查找文件里的内容
要搜索文件内容,应该使用grep命令。grep的处理过程基本上就是,为它提供一个搜索想要匹配的模式,指定要搜索的一个或一组文件(甚至是整个硬盘空间),然后grep就会输出能够与搜索模式匹配的各行内容的列表。
通配符不等于正则表达式。虽然通配符和正则表达式都使用星号()字符,但它们的含义完全不同。通配符中使用特定的字符(如?和)表示替换(substitution),而正则表达式中同样的字符表示要对前面的内容进行匹配的次数。例如,在通配符中,可以把c?t中的?替换成另一个字符,而且只能替换一次,所以这个通配符可以匹配cat、cot和cut,但不能与ct匹配。在正则表达式中,c[a-z]?t中的?表示从字母A到Z都可以匹配,但只可以匹配0次或1次,所以这个正则表达式可以匹配cat、cot、cut,也可以匹配ct。
正则表达式中的单引号和双引号的用法也有很大区别。单引号('和')是在告诉shell正在搜索一个字符串,而双引号("和")则是让shell知道想要使用shell变量。
grep 'hey!' *
结果好多了。单引号告诉grep搜索内容不包含任何shell变量,只是一串需要匹配的字符。你瞧,现在只有一个结果,正是你要找的那个。
递归式地搜索文件中的文本
grep -R hideous *
grep -R hideous *| less
忽略大小写
grep -i hideous h_p_lovecraft/*
如果只需要精确匹配pain的行,又该怎么办呢?这时就要使用-w(或--word-regexp)选项。
$ grep -w pain *
要找到行号,可以利用-n(或--line-number)选项。$ grep -n pain *
根据进程用户查找
ps命令可以列出运行中的进程,而-f选项能够让ps提供完整的列表,其中包括每个进程的很多信息;而-U选项,后面跟上用户名称,可以限制只输出那个用户拥有的进程。
ps -fU scott | grep firefox
查看文件中搜索内容的上下文信息
使用-B(或--before-context=#)选项,就可以得到答案。如下所示:
$ ls -1 | grep -B 3 A_Love_Supreme
如果要找出A Love Supreme之后的唱片,则应该使用-A(或--after-context=#)选项。如下所示:
$ ls -1 | grep -A 3
要得到A Love Supreme专辑的完整历史背景,则可以试试-C(或--context=#)选项,它可以把该专辑之前和之后的内容都组合在一起。
$ ls -1 | grep -C 2
如果结合-n选项,结果中的信息将更有用,该选项可以列出行号(因为这里使用的是ls -1,所以它是ls结果列表中的行号)。
ls -1 | grep -n -C 1 Live
使用-v(或--invert-match)选项,就可以只显示与给定模式不匹配的结果了。使用-v选项,确实能够对结果进行过滤,只精确显示需要的内容。
ls -1 | grep -v Led_Zeppelin
列出这些行所在的文件
用-l(或--files-with-matches)选项,就能够只列出这些行所在的文件(记住,-i选项用于让搜索不区分大小写)。
$ grep -il hideous h_p_lovecraft/*
0 收藏&&|&&1
你可能感兴趣的文章
1 收藏,312
3 收藏,1.2k
1 收藏,861
分享到微博?
我要该,理由是:计费方式:
搜索引擎:
建筑及装修
化工及材料
广告及包装
旅游及票务
交易总额:?-
本月佣金:?-元
今日佣金:?-元
优化师数:-名
商户数:-名
网站数:-个
关键词数:-个
您的位置:
& linux下手动更新locate所在数据库的指令updatedb为什么行不通
linux下手动更新locate所在数据库的指令updatedb为什么行不通
提问者:龙的传人&&|&&
分类:其他&&|&&
浏览0次&&|&&
悬赏分:1积分
加&是作为后台任务执行的意思,一般用于对应命令执行时间长的情况。作为后台任务执行会释放终端,这样你又可以继续敲命令了
服务热线:400-
投诉电话:7
地址:浙江省杭州市西湖区文三路90号东部软件园科技广场315-318室
官方手机版
官方公众号
copyright 2016(版权所有 杭州志卓科技股份有限公司 浙ICP备号-86

我要回帖

更多关于 locate指令 的文章

 

随机推荐