1 用于搜索文件的find命令
find命令用于在目录树中搜索指定文件名的文件。
find命令支持一些选项,如
find / -name test -print 在根目录下搜索名为test的文件并打印文件名。
find / -mount -name test -print 指定不要搜索挂载的其它文件系统的目录
find命令还支持一些测试,每种测试返回的结果有两种可能,true或false。find命令开始工作时,它按照顺序将定义的每种测试依次应用到它搜索的每个文件上,当一个测试返回false,find命令就停止处理它当前找到的这个文件,并继续搜索,如果一个测试返回true,find命令将继续下一个测试或对当前文件采取行动。
如,
-name 指定文件名,文件名要用引号扩起来。
type -c 文件类型为c,c常见为d目录和f普通文件。
-user username 指定文件的拥有者为username。
-newer otherfile 搜索的文件比otherfile新。
一些操作符可以用来组合测试,大多数操作符有长格式和短格式,用圆括号来强制测试和操作符的优先级,由于圆括号对shell有特殊含义,要用反斜线\来引用圆括号,即\(与\),从而保证模式没有被shell拓展,而是作为参数传递给find命令。

如,find ./ \(-newer X -o -name "_*" \)
find . -newer while2 -print
find . -newer while2 -type f -print
对测试进行组合,如find . \( -name "_*" -or -newer while2 \) -type f -print
-exec和-ok命令执行的是一个嵌入式命令,它们将命令行上后续的参数作为它们参数的一部分,直到被\;序列终止。**魔术字符串{ }**是一个特殊类型的参数,它将被当前文件的完整路径取代。
-exec command 执行一条命令,以\;字符结束。
-ok与-exec类似,但在执行命令之前会针对每个要处理的文件提示用户进行确认。
如,find . -newer while2 -type f -exec ls -l {} \;
2 用于搜索文件内容的grep命令
grep命令用于在文件中搜索指定的字符串。
grep指通用正则表达式解析器(General Regular Expression Parser),find命令在系统中搜索文件,grep命令用于在文件中搜索字符串。我们可在使用find命令时,将grep作为传递给-exec的一条命令。
grep有一些主要选项:
-c 输出匹配行的数目
-E 启动拓展表达式
-i 忽略大小写
-l 只列出包含匹配行的文件名,而不输出真正的匹配行。
-v 对匹配模式取反
grep in word.txt
grep -c in words.txt words2.txt
grep -c -v in words.txt words2.txt
正则表达式:它是一种特殊的表达式,利用它我们可以实现更复杂的匹配,在使用过程中,一些字符以特定方式处理。

方括号中可以使用一些有用的特殊匹配模式,


当用于拓展匹配的选项-E被指定后,我们需要在控制匹配完成的其它字符前加\字符,此时下表中的模式可以使用。

grep e$ words2.txt
grep a[[:blank:]] words2.txt
grep Th.[[:space:]] words2.txt
grep -E [a-z]\{10\} words2.txt
本文详细介绍了find命令在目录树中搜索文件的方法,包括各种选项和测试,以及如何使用grep命令在文件中搜索指定字符串。文章涵盖了find命令的高级用法,如组合测试和执行嵌入式命令,同时深入探讨了grep的选项和正则表达式的应用。
2161

被折叠的 条评论
为什么被折叠?



