在使用 linux 查找文件的时候,我们会用 find 命令或者 grep 命令。但是两者有什么区别呢?接下来会对两者的区别做一下分析。
find 命令说明
find 命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
find 命令的语法
find [选项] [目录]
详细的参数可以查看官方文档,这里针对常用的场景进行描述
- 当前目录及其子目录下所有文件后缀为
.txt
的文件
find . -name "*.txt"
-iname 会忽略大小写
- 当前目录及其子目录中的所有文件列出
find . -type f
-type 指定查找的文件类型,可以是 f 或者 d,表示查找文件或者目录。 f 代表文件,d 代表目录。
grep 命令说明
Linux grep 命令用于查找文件里符合条件的字符串。
rep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为 -,则 grep 指令会从标准输入设备读取数据。
grep 命令的语法
grep [选项] [范本] [文件]
- 查找后缀有 file 字样的文件中包含 test 字符串的文件,并打印出该字符串的行。
grep test *file
- 以递归的方式查找符合条件的文件
grep -r react ./src/
结果
./src//components/HomepageFeatures.tsx:import React from 'react';
./src//theme/BlogPostPage/index.js:import React from 'react';
./src//theme/Comment/index.tsx:} from 'react'
./src//theme/DocItem/index.js:import React from 'react';
./src//pages/index.tsx:import React from 'react';
./src//pages/websites/index.jsx:import React from 'react'
-r 递归查找,上面没有 -r 只能查找单个文件
总结
grep 是查找文件中匹配条件的行,find 是搜索匹配条件的文件。