[英]What is the difference between find with grep?
这些命令有什么区别:
find . –type f –name '*txt*'
和
find . –type f | grep 'txt'
我试图运行它,但有区别,但我想知道为什么?
主要区别是FIND用于使用过滤器搜索文件和目录,而GREP用于搜索文件内的模式或搜索过程。
FIND是使用过滤器(如大小,访问时间,修改时间)搜索文件和文件夹的命令。
find命令列出目录中的所有文件及其与一组过滤器匹配的子目录。
此命令最常用于查找具有特定名称的所有文件。
要查找当前目录及其所有子目录中名为theFile.txt的所有文件,请输入:
find . -name theFile.txt -print
要在当前目录及其子目录中查找以扩展名.txt结尾的所有文件,请输入:
find . -name "*.txt" -print
GREP :(全球搜索正则表达式和打印)
搜索文件以查找指定的字符串或表达式。
Grep搜索包含指定模式的行,默认情况下将它们写入标准输出。
grep myText theFile.txt
结果:Grep将打印出每行包含单词myText 。
在第一个示例中,您使用find
实用程序列出常规文件的文件名,其中文件名包含字符串txt
。
在第二个示例中,您使用find
实用程序列出常规文件的文件名,并通过管道将结果文件名提供给grep
实用程序,该实用程序在每个文件的内容中搜索字符串txt
。 每次找到该字符串时,都会输出该文件的相应行。
如果目录名中有txt
的路径,则第二个命令将找到匹配项。 当你不想匹配像txtfiles/allfiles.tgz
和transactions/txtelevisions/bigscreen.jpg
你会想要使用第一个。
两者之间的区别在于,在第一种情况下, find 正在寻找名称(仅名称)与模式匹配的文件。
在第二种情况下, find 正在查找所有类型为“f”的文件并将它们的相对路径作为字符串输出。 该结果通过管道传送到 grep,grep 将输入字符串过滤为与模式匹配的字符串。 模式 'txt' 将过滤模式的文件路径结果。 重要的是,第二种情况将包括匹配路径中任何位置的文件路径,而不仅仅是文件名。 第一种情况不会这样做。
第一个命令将显示名称中包含txt 的文件。 而第二个命令将突出显示内容中包含txt的所有文件的行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.