这些命令有什么区别:
find . –type f –name '*txt*'
和
find . –type f | grep 'txt'
我试图运行它并且存在差异,但我想知道为什么?
答案 0 :(得分:6)
主要区别是 FIND 用于使用过滤器搜索文件和目录,而 GREP 用于搜索文件内的模式或搜索过程< / em>的
FIND 是使用过滤器(如大小,访问时间,修改时间)搜索文件和文件夹的命令。
find命令列出目录中的所有文件及其与一组过滤器匹配的子目录。
此命令最常用于查找具有特定名称的所有文件。
要查找当前目录及其所有子目录中名为theFile.txt的所有文件,请输入:
find . -name theFile.txt -print
要查看当前目录及其子目录中所有以扩展名.txt结尾的文件,请输入:
find . -name "*.txt" -print
GREP :(全球搜索正则表达式并打印)
在文件中搜索指定的字符串或表达式。
Grep搜索包含指定模式的行,默认情况下,将它们写入标准输出。
grep myText theFile.txt
结果:Grep将打印出每行包含单词 myText 。
答案 1 :(得分:3)
在第一个示例中,您使用find
实用程序列出常规文件的文件名,其中文件名包含字符串txt
。
在第二个示例中,您使用find
实用程序列出常规文件的文件名,并通过管道将生成的文件名提供给grep
实用程序,该实用程序搜索每个文件的内容以查找字符串txt
。每次找到字符串时,都会输出相应的文件行。
答案 2 :(得分:0)
如果目录名中有txt
的路径,则第二个命令将找到匹配项。如果您不想匹配txtfiles/allfiles.tgz
和transactions/txtelevisions/bigscreen.jpg
等路径,则需要使用第一个路径。