Linux常用命令(二)_搜索类命令find、grep

时间:2020-9-8 作者:admin


文章目录

find命令用于在目录中匹配文件,grep命令用于在文件中匹配关键词

1. find命令

1.1 基本语法

find [搜索范围] [option]

option种类 功能
-name<查询方式> 按照指定的文件名查找模式查找文件
-user<用户名> 查找属于指定用户名所有文件
-size<文件大小> 按照指定的文件大小查找文件
-perm<755> 按照文件权限查找文件
-mtime -n +n 按照文件的更改时间查找文件。 -n表示距现在n天以内,+n表示距现在n天前
-type<文件类型> 表示查找某一类型的文件 b\d\c\p\l\f

1.2 实例

find . -name “* .txt”
find . -iname “.txt”
find /usr/ -path ‘* local* ’
find . -regex “.*(.txt|.pdf)$”

搜索大于(小于/等于)10K的文件并删除
find . -type f -size +(-/空)10k -delete

搜索权限不为777的文件 按执行权限来查找
find . -type f ! -perm 777

搜索tom的所有文件
find . -type f -user tom

最后10min 访问的文件
find /home -amin -10

最近两天访问的文件
find /home -atime -2

5min里修改过的文件
find / -mmin -5

1.3 find与-exec、xargs

  • find与-exec

-exec 执行该参数所给出的shell命令。相应的命令形式为“command” {} ; {} 与;有空格。
find . -type f -user root -exec chown tom {} ;
Linux常用命令(二)_搜索类命令find、grep
-ok 安全模式执行shell命令。-ok和-exec行为一样,不过它会给出提示,是否执行相应的操作。
find . -name ” *.txt” -ok rm (http://man.linuxde.net/rm) {} ;
Linux常用命令(二)_搜索类命令find、grep

  • find与xargs

在使用find命令的-exec选项处理匹配到的文件时, find命令将所有匹配到的文件一起传递给exec执行。但有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出现溢出错误。错误信息通常是“参数列太长”或“参数列溢出”。这就是xargs命令的用处所在,特别是与find命令一起使用。

find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去。

用grep命令在所有的普通文件中搜索hostname这个词
find . -type f -print | xargs grep “hostname”

删除文件大小为零的文件
find ./ -size 0 | xargs rm -f & 删除文件大小为零的文件

2.管道符(|)

作用:将前面命令的标准输出作为后面命令的标准输入

3.grep命令

grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。

3.1 基本语法

grep 关键词 [文件/目录] [option]

option种类 功能
-c / –count 只打印匹配的行数,不显示匹配的内容
-f File / –file=File 从文件中提取模板
-i / –ignore-case 忽略大小写
-l / –files-with-matches 打印匹配模板的文件清单
-L / –files-without-match 打印不匹配模板的文件清单
-n / –line-number 在匹配的行前面打印行号。
-w,–word-regexp 如果被<和>引用,就把表达式做为一个单词搜索

3.2 实例

在多个文件中查找包含“test_text”的文本行,标记并返回。
grep “test_text” file_1 file_2 —color=auto
Linux常用命令(二)_搜索类命令find、grep
-E:正则匹配 -o: 只输出 文件中匹配到的部分。
grep -o -E “[a-c]+” 或 egrep “[a-c]+”
Linux常用命令(二)_搜索类命令find、grep
-c:统计文件和文本中包含匹配字符串的行数
grep -c test_text/“test_text” file_1 file_2

-r:递归搜索 -n:显示关键词在文件的第几行
grep “test_text” . -r -n 在多级目录中对文本进行递归搜索。

-i 忽略大小写 -n 显示搜索字符所在行数。
grep -i HELLO -n text1
Linux常用命令(二)_搜索类命令find、grep

-e 制动多个匹配样式
grep -e “only” -e “hello” -o -n text1
Linux常用命令(二)_搜索类命令find、grep
只匹配整个单词,而不是字符串的一部分(如匹配‘magic’,而不是‘magical’)
grep -w pattern files

声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。