Linux中常见搜索命令
精选
原创
©著作权归作者所有:来自51CTO博客作者LazyUpdate的原创作品,请联系作者获取转载授权,否则将追究法律责任
一、find命令
命令所在路径:/bin/find
执行权限:所有用户
语法:find [搜索范围] [匹配条件]
功能描述:文件搜索
$ find /etc -name init
//在目录/etc中查找文件init
-iname 不区分大小写
$ find /etc -name *init*
//在目录/etc中查找文件名包含init
$ find /etc -name init???
//在目录/etc中查找文件名init开头并有3个字符的
$ find /etc -name init*
//在目录/etc中查找文件名init开头的
tips:* 匹配任意字符,?匹配单个字符
$ find / -size +204800
//在根目录下查找大于100MB的文件
+n 大于 -n 小于 n 等于
$ find /home -user shenchao
//在根目录下查找所有者为shenchao的文件
-group 根据所属组查找
$ find /etc -cmin -5
在/etc下查找5分钟内被修改过属性的文件和目录
-amin 访问时间 access
-cmin 文件属性 change
-mmin 文件内容 modify
$ find /etc -size +163840 -a -size -204800
//在/etc下查找大于80MB小于100MB的文件
-a 两个条件同时满足
-o 两个条件满足任意一个即可
$ find /etc -name inittab -exec ls -l {} \;
在/etc下查找inittab文件并显示其详细信息
-exec/-ok 命令 {} \; 对搜索结果执行操作
tips:-exec直接执行,ok会询问操作
-type 根据文件类型查找
f 文件 d 目录 l 软链
-inum 根据i节点查找
二、locate命令
命令所在路径:/usr/bin/locate
执行权限:所有用户
语法:locate 文件名
功能描述:在文件资料库中查找文件
-A,--all
只打印与所有 PATTERN 匹配的条目,而不是只需要匹配其中一个。
-b,--basename
仅将基本名称与指定模式匹配。这与--wholename 相反。
-c,--count
将匹配的条目的数量写入标准输出,而不是文件名。
-d,--database DBPATH
用 DBPATH 替换默认数据库。DBPATH 是一个:-分隔的数据库文件名列表。
如果指定了多个 --database 选项,则生成的路径是单独路径的串联。
空数据库文件名被默认数据库替换。
数据库文件名 - 指的是标准输入。
请注意,数据库只能从标准输入读取一次。
-e,--existing
仅打印运行 locate 时存在的文件的条目。
-L,--follow
检查文件是否存在时(如果指定了 --existing 选项),后接软链接。
这会导致从输出中省略损坏的软链接。这是默认行为。
可以使用 --nofollow 指定相反的情况。
-h,--help
输出帮助文档后退出。
三、which命令
命令所在路径:/usr/bin/which
执行权限:所有用户
语法:which [命令]
功能描述:搜索命令所在目录及别名信息
n<文件名长度>
指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。
-p<文件名长度>
与-n参数相同,但此处的<文件名长度>包括了文件的路径。
-w
指定输出时栏位的宽度。
-V 显示版本信息。
四、whereis命令
命令所在路径:/usr/bin/whereis
执行权限:所有用户
语法:whereis [命令名称]
功能描述:搜索命令所在目录及帮助文档路径
-b 只查找二进制文件。
-B<目录> 只在设置的目录下查找二进制文件。
-f 不显示文件名前的路径名称。
-m 只查找说明文件。
-M<目录> 只在设置的目录下查找说明文件。
-s 只查找原始代码文件。
-S<目录> 只在设置的目录下查找原始代码文件。
-u 查找不包含指定类型的文件。
五、grep命令
命令所在路径:/bin/grep
执行权限:所有用户
语法:grep [指定字串] [文件]
功能描述:在文件中搜寻字串匹配的行并输出
-a 或 --text
不要忽略二进制的数据。
-A<显示行数> 或 --after-context=<显示行数>
除了显示符合范本样式的那一列之外,并显示该行之后的内容。
-b 或 --byte-offset
在显示符合样式的那一行之前,标示出该行第一个字符的编号。
-B<显示行数> 或 --before-context=<显示行数>
除了显示符合样式的那一行之外,并显示该行之前的内容。
-c 或 --count
计算符合样式的列数。
-C<显示行数> 或 --context=<显示行数>或-<显示行数>
除了显示符合样式的那一行之外,并显示该行之前后的内容。
-d <动作> 或 --directories=<动作>
当指定要查找的是目录而非文件时,必须使用这项参数,
否则grep指令将回报信息并停止动作。
-e<范本样式> 或 --regexp=<范本样式>
指定字符串做为查找文件内容的样式。
-E 或 --extended-regexp
将样式为延伸的正则表达式来使用。
-f<规则文件> 或 --file=<规则文件>
指定规则文件,其内容含有一个或多个规则样式,
让grep查找符合规则条件的文件内容,格式为每行一个规则样式。
-F 或 --fixed-regexp
将样式视为固定字符串的列表。
-G 或 --basic-regexp
将样式视为普通的表示法来使用。
-h 或 --no-filename
在显示符合样式的那一行之前,不标示该行所属的文件名称。
-H 或 --with-filename
在显示符合样式的那一行之前,表示该行所属的文件名称。
-i 或 --ignore-case
忽略字符大小写的差别。
-l 或 --file-with-matches
列出文件内容符合指定的样式的文件名称。
-L 或 --files-without-match
列出文件内容不符合指定的样式的文件名称。
-n 或 --line-number
在显示符合样式的那一行之前,标示出该行的列数编号。
-o 或 --only-matching : 只显示匹配PATTERN 部分。
-q 或 --quiet或--silent : 不显示任何信息。
-r 或 --recursive : 此参数的效果和指定"-d recurse"参数相同。
-s 或 --no-messages : 不显示错误信息。
-v 或 --invert-match : 显示不包含匹配文本的所有行。
-V 或 --version : 显示版本信息。
-w 或 --word-regexp : 只显示全字符合的列。
-x --line-regexp : 只显示全列符合的列。
-y : 此参数的效果和指定"-i"参数相同。