linux grep locate whereis find命令使用详解

it2022-05-05  84

原文 https://www.cnblogs.com/wanqieddy/archive/2011/07/15/2107071.html

grep

grep General Regular Expression Parser 通用规则表达式分析程序 是一种强大的文本搜索工具 它能使用正则表达式搜索文本 并把匹配的行打印出来

使用语法grep[选项] pattern[文件名]

. 匹配任意一个字符 * 匹配0 个或多个*前的字符 ^ 匹配行开头 $ 匹配行结尾 [] 匹配[ ]中的任意一个字符 []中可用 - 表示范围 例如[a-z]表示字母a 至z 中的任意一个 \ 转意字符 命令中的选项为 -b 显示块号 -c 仅显示各指定文件中包含模式的总行数 -i 模式中字母不区分大小写 -h 不将包含模式的文件名显示在该行上 -l 仅显示包含模式的文件名 -n 显示模式所在行的行号 -s 指定文件若不存在或不可读 不提示错误信息 -v 显示所有不包含模式的行

其中 pattern为所要匹配的字符串如在/etc/passwd文件下查找包含’carey’字符的行

$ grep carey /etc/passwd

要用好grep这个工具 其实就是要写好正则表达式 所以这里不对grep的所有功能进行实例讲解 只列几个例子 讲解一个正则表达式的写法

$ grep 'test' d*

显示所有以d开头的文件中包含test的行

$ ls -l | grep '^public'

通过管道过滤ls -l输出的内容 只显示以public开头的行

后面的^字符强制grep命令只在每行的开头找public整个搜索模式 pattern 用单引号括起来 使shell不理会它们shell只将单引号去掉 将搜索模式送给grep命令

$ grep -i 'hello world' menu.h main.c

显示在menu.h和main.c文件中匹配’hello world’的行 忽略大小写

grep 'sample' -R *

find

find是最常见和最强大的查找命令 你可以用它找到任何你想找的文件

find的使用格式如下

find <指定目录> <指定条件> <指定动作> - <指定目录> 所要搜索的目录及其所有子目录默认为当前目录 - <指定条件> 所要搜索的文件的特征 - <指定动作> 对搜索结果进行特定的处理

如果什么参数也不加 find默认搜索当前目录及其子目录 并且不过滤任何结果 也就是返回所有文件 将它们全都显示在屏幕上

$ find . -name 'my*' –ls

搜索当前目录 含子目录 下同 中所有文件名以my开头的文件 并显示它们的详细信息

$ find /home -user rtos

搜索/home下拥有者为rtos的文件

$ find . -type f -mmin -10

搜索当前目录中 在过去10分钟中更新过的所有的普通文件如果不加-type f参数 则搜索普通文件+特殊文件+目录

$ find / -type f -size +100M

查找系统中所有大于100M的文件

说明 如果你要寻找一个档案的话 那么使用 find 会是一个不错的主意不过 由于 find 在寻找数据的时候相当的耗硬盘 所以没事情不要使用 find 啦 有更棒的指令可以取代呦 那就是whereis与locate

locate

locate命令其实是’find -name’的另一种写法 但是要比后者快得多 原因在于它不搜索具体目录 而是搜索一个数据库 /var/lib/locatedb 这个数据库中含有本地所有文件信息Linux系统自动创建这个数据库 并且每天自动更新一次 所以使用locate命令查不到最新变动过的文件为了避免这种情况 可以在使用locate之前 先使用updatedb命令 手动更新数据库

$ locate /etc/sh

搜索etc目录下所有以sh开头的文件

$ locate -i ~/m

搜索用户主目录下 所有以m开头的文件 并且忽略大小写

whereis

whereis命令只能用于程序名的搜索 而且只搜索二进制文件(参数-b) man说明文件(参数-m)和源代码文件(参数-s) 如省略参数 则返回所有信息

$ whereis grep

grep: /bin/grep /usr/share/man/man1p/grep.1p.gz /usr/share/man/man1/grep.1.gz

which

which命令的作用是 在PATH变量指定的路径中 搜索某个系统命令的位置 并且返回第一个搜索结果也就是说 使用which命令 就可以看到某个系统命令是否存在 以及执行的到底是哪一个位置的命令

$ which grep /bin/grep


最新回复(0)