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 {} ;
-ok 安全模式执行shell命令。-ok和-exec行为一样,不过它会给出提示,是否执行相应的操作。
find . -name " *.txt" -ok rm (http://man.linuxde.net/rm) {} ;
- 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
-E:正则匹配 -o: 只输出 文件中匹配到的部分。
grep -o -E “[a-c]+” 或 egrep “[a-c]+”
-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
-e 制动多个匹配样式
grep -e “only” -e “hello” -o -n text1
只匹配整个单词,而不是字符串的一部分(如匹配‘magic’,而不是‘magical’)
grep -w pattern files