(1)find
在windows中搜索文件, 一般查找文件需要传入两个条件:
① 在哪些目录中查找;
② 查找的内容;
在linux中, 查找文件的也需要这两个条件, 不同于windows使用搜索框查找, linux中使用find 命令查找文件
find命令格式为:
find 目录名 选项 查找条件
举例1:
find /home/book/diral/ -name "test1.txt"
说明:
• /home/book/dira/ 指明了查找路径
• “-name” 表示以名字来查找文件
• “test1.txt” , 就指明查找名为 "test1.txt"的文件
举例2:
find /home/book/diral/ -name "*.txt"
说明: 查找指定目录下面所有以".txt"结尾的文件, 其中"*" 是通配符,
举例3:
find /home/book/diral/ -name "dira"
说明: 查找指定目录下面是否存在 "dira"这个目录或文件, "dira"是名称
注意:
① 如果没有指定查找目录 , 则默认为当前目录
find . -name "*.txt" //其中 . 代表当前路径
find -name "*.txt" //没加路径,默认是当前路径下查找
② find 还有一些高级用法, 如查找最近几天(几个小时)之内(之前)有变动的文件
find /home/book -mtime -2 //查找/home目录下两天内有变动的文件
(2)grep
grep的命令作用是查找文件中符合条件的字符串, 其格式如下:
grep [选项] [查找模式] [文件名]
加入dira目录的test1.txt 和dirb目录的test1.txt都含有如下内容:
aaa AAAA abc abcabcabc cabcbacba match_patern nand->erase
通过查找字符串 , 我们希望显示如下内容:
① 所在文件名—grep 查找时默认已经显示目标文件名
② 所在的行号—使用-n选项
grep -rn "字符串" 文件名
其中 r (recursive):递归查找
n(number):显示目标位置的行号
• 字符串:要查找的字符串
• 文件名: 要查找的目标文件,如果是*则表示查找当前目录下的所有文件和目录
举例:
//在test1.txt中查找字符串 abc
grep -n "abc" test1.txt
//在当前目录递归查找字符串abc
grep -rn "abc" *
注意可以加入**-w**进行全字匹配
更骚的操作举例:
可以在grep的搜索结果中,再次执行grep搜索,
也就是第2个命令在第一个命令的结果中搜索
grep "ABC" * -nR | grep "\.h"
| 管道符号用于将一个命令的输出作为另一个命令的输入。在这个例子中,第一个
grep
命令的输出(即所有包含“ABC”的行的信息)被传递给第二个grep
命令。
grep "\.h"
- 第二个
grep
命令接收来自第一个grep
命令的输出作为输入。"\.h"
是要搜索的模式,用于匹配以.h
结尾的字符串。注意,由于.
在正则表达式中有特殊含义(表示任意单个字符),因此在这里需要使用反斜杠\
来转义,表示字面上的.
字符。