当前位置: 首页 > Linux

linux文件搜索命令

时间:2023-04-07 01:34:47 Linux

1。查找可执行文件(which/whereis)用于从系统的PATH变量定义的目录中查找可执行文件的绝对路径。比如要查找passwd命令在系统中的绝对路径,使用方法如下:[root@localhost~]#whichpasswd/usr/bin/passwd也可以使用whereis查找其路径,但与它不同的是,它不仅可以找到它的二进制文件,还可以找到相关的man文件2.locate和slocatelocate命令可以在文件、程序和目录中搜索与提供的搜索项匹配的内容,并显示任何匹配结果到终端依次接口。locate命令不执行系统的实时搜索。实际上,它搜索每天自动更新的文件名数据库。因为locate搜索一个已经创建的数据库,所以搜索结果几乎是即时显示的。较新版本的slocate(代表安全定位)命令不会搜索运行slocate命令的用户没有权限查看的目录(例如,如果您不是root,那么当您使用locate搜索时,它不会显示/root目录的结果)。因为Linux系统默认是区分大小写的。明确了这一点之后,就可以加上-i选项进行不区分大小写的搜索,这样既可以找到路径中包含haggard的文件,也可以找到包含Haggard的文件(其实包括HAGGARD、HaGgArD等等)。locate-ihaggard如果你只想看到前x个结果(x是你选择的整数),你可以使用-n选项,后面是你想看的结果数。$locate-n3pdfupdatedblocate命令依赖于数据库文件。默认情况下,Linux系统每天都会搜索系统中的所有文件,然后将搜索到的文件记录到数据库中。运行locate命令时,可以直接在数据库中查找记录并打印到屏幕上,所以使用locate命令比find命令更快。在执行这条命令之前,一般需要先执行updatedb命令(这个不是必须的,因为系统每天都会自动调取更新数据库信息,但是有时候因为文件变了,系统又没有更新,不可能找到实际存在的文件.files.所以有时候需要主动运行这条命令来创建最新的文件列表数据库)及时更新数据库记录。下面是使用locate命令查找httpd.conf文件:updatedb,手动更新locate使用的数据库。因为这个命令基本上索引了您计算机上的每个文件和文件夹。但是这里有一点需要注意:updatedb运行的速度与你硬盘上的数据量和你电脑的处理速度有直接关系。处理器越快,硬盘驱动器越快,文件越少,updatedb运行得越快。如果CPU很慢,硬盘只有5400RPM,并且有100万个文件,不要指望updatedb会更快。如果想知道updatedb运行了多长时间,可以在updatedb前面加上time命令,如下所示:定位数据库。此信息有助于记住将来可能需要updatedb并且时间紧迫。3、查找虽然locate命令是在文件的数据库中查找,运行速度非常快,但是它依赖于不断更新的数据库;find命令可以很方便的根据指定的查询条件来查找文件。.由于find命令必须分析文件的结构,所以它的速度比locate命令慢很多。但是,使用find命令可以完成很多locate命令无法实现的功能。默认情况下,find会自动递归搜索整个目录结构。查找音乐盘中唯一Shaggs组下的所有MP3文件,如下:$cd/media/music$find。-nameShaggs需要使用通配符,但是为了防止shell以意想不到的方式解释通配符,justSearches必须用引号括起来。让我们用新的和改进的方法再次搜索:$find。-name"*Shaggs*"find命令的另一个重要方面是搜索结果的格式取决于正在搜索的路径。之前用的是相对路径,所以结果也是按照相对路径给出的。如果使用绝对路径(路径以/开头)会怎样?$find/-name"*Shaggs*"/music/Outsider/Shaggs按用户/组搜索想在您的音乐驱动器中搜索scott拥有的文件吗?使用find命令和-user选项,后跟用户名(或用户号,可以在/etc/passwd中找到),如下所示:-userscott可能更容易找到属主不是scott的文件,只要在你要取反的选项前加一个感叹号(!)即可。寻找。!-userscott如果要搜索特定用户组拥有的文件,只需使用-group选项,后跟组名或组号。在音乐盘中,scott应该是所有者,music是它所属的用户组。让我们看看是否有不属于music组的文件,如下所示:$find.!-groupmusicSearchbysize如果要搜索的文件大小大于10MB,需要在指定大小前加一个加号(+);如果你要搜索的文件大小小于10MB,你需要在大小前加一个减号(-),像这样:$find.-size+10M如果要搜索大文本文件,可以在数字后面加c。c修改搜索的大小单位为字节。字符是文本文件中的一个字节,因此记住选项c的一种简单方法是将它与文本文件中的“字符”相关联。例如,要搜索一个大文本文件,可以使用以下代码:$find/home/scott/documents-size+500000c4。查找文件的内容要查找文件的内容,应该使用grep命令。grep的过程基本上就是给它提供一个搜索要匹配的模式,指定要搜索的一个文件或一组文件(甚至是整个硬盘空间),然后grep会输出每一行的内容可以匹配搜索模式列表。通配符通配符不等于正则表达式。虽然通配符和正则表达式都使用星号()字符,但它们的含义完全不同。通配符中使用特定字符(如?和)表示替换,而正则表达式中的相同字符表示匹配前面内容的次数。例如,在通配符中,您可以替换?在c?t中与另一个字符,并且只有一次,所以这个通配符可以匹配cat、cot和cut,但不能匹配ct。在正则表达式中,?inc[a-z]?t表示可以匹配从字母A到Z,但是只能匹配0次或1次,所以这个正则表达式可以匹配cat,cot,cut,也可以匹配ct。正则表达式中单引号和双引号的用法也有很大区别。单引号('和')告诉shell您正在搜索一个字符串,双引号("和")告诉shell您想要使用shell变量。grep'嘿!*效果更好。单引号告诉grep不搜索任何包含任何shell变量的内容,只搜索要匹配的字符串。你瞧,现在只有一个结果,而这正是你要找的那个。递归搜索文件中的文本grep-Rhideous*grep-Rhideous*|lessignorecasegrep-ihideoush_p_lovecraft/*exactmatch如果你只需要精确匹配来缓解疼痛怎么办?然后使用-w(或--word-regexp)选项。$grep-wpain*查找行号要查找行号,请使用-n(或--line-number)选项。$grep-npain*根据进程用户找到ps命令列出正在运行的进程,-f选项可以让ps提供一个完整的列表,包括每个进程的很多信息;和-U选项,后跟用户名,您可以将输出限制为仅该用户拥有的进程。ps-fU斯科特|grepfirefox查看文件中搜索内容的上下文信息使用-B(或--before-context=#)选项得到答案。如下:$ls-1|grep-B3A_Love_Supreme如果你想在ALoveSupreme之后找到相册,你应该使用-A(或--after-context=#)选项。如下:$ls-1|grep-A3要得到ALoveSupreme专辑的完整历史背景,可以试试-C(或--context=#)选项,可以把专辑前后的内容全部放在一起。$ls-1|grep-C2如果与-n选项结合使用,结果中的信息会更有用,它会列出行号(因为这里使用了ls-1,所以它是ls结果列表中的行号)。ls-1|grep-n-C1LiveInvertMatch使用-v(或--invert-match)选项,您只能显示与给定模式不匹配的结果。使用-v选项,确实可以过滤结果并只准确显示需要的内容。ls-1|grep-vLed_Zeppelin列出这些行所在的文件使用-l(或--files-with-matches)选项仅列出这些行所在的文件(记住,-i选项用于搜索不区分大小写).$grep-ilhideoush_p_lovecraft/*