文件的查询和搜索也是最常用的操作,在嵌入式 Linux 开发中常常需要在 Linux 源码文件中查询某个文件是否存在,或者搜索哪些文件都调用了某个函数等等。本节我们就讲解两个最常用的文件查询和搜索命令:find 和 grep。
1、命令 find
find 命令用于在目录结构中查找文件,其命令格式如下:
find [路径] [参数] [关键字]
路径是要查找的目录路径,如果不写的话表示在当前目录下查找,关键字是文件名的一部分,主要参数如下:
-name<filename> 按照文件名称查找,查找与 filename 匹配的文件,可使用通配符。
-depth 从指定目录下的最深层的子目录开始查找。
-gid<群组识别码> 查找符合指定的群组识别码的文件或目录。
-group<群组名称> 查找符合指定的群组名称的文件或目录。
-size<文件大小> 查找符合指定文件大小的文件。
-type<文件类型> 查找符合指定文件类型的文件。
-user<拥有者名称> 查找符合指定的拥有者名称的文件或目录。
find 命令的参数有很多,常用的就这些,关于其它的参数大家可以自行上网查找,我们来看一下如何使用find 命令进行文件搜索,我们搜索目录/etc 中以“vim”开头的文件为例,操作如图所示:
find命令操作
从图中可以看出,在目录/etc 下,包含以“vim*”开头的文件有/etc/vim、/etc/vim/vimrc等等,就不一一列出了。
2、命令 grep
find 命令用于在目录中搜索文件,我们有时候需要在文件中搜索一串关键字,grep 就是完成这个功能的,grep 命令用于查找包含指定关键字的文件,如果发现某个文件的内容包含所指定的关键字,grep 命令就会把包含指定关键字的这一行标记出来,grep 命令格式如下:
grep [参数] 关键字 文件列表
grep 命令一次只能查一个关键字,主要参数如下:
-b 在显示符合关键字的那一列前,标记处该列第 1 个字符的位编号。
-c 计算符合关键字的列数。
-d<进行动作> 当指定要查找的是目录而非文件时,必须使用此参数!否则 grep 指令将回报信息并停止搜索。
-i 忽略字符大小写。
-v 反转查找,只显示不匹配的行。
-r 在指定目录中递归查找。
比如我们在目录/usr 下递归查找包含字符“Ubuntu”的文件,操作如图所示:
命令grep演示
3、文件类型查询命令
在用户根目录下使用命令“ls-l”来查看用户根目录下所有文件的详细信息,如图所示:
文件详细信息
在图中,每个文件的详细信息占一行,每行最前面都是一个符号就标记了当前文件类型,比如test1 的第一个字符是“d”,test1.tar.bz2 文件第一个字符是“-”。这些字符表示的文件类型如下:
– 普通文件,一些应用程序创建的,比如文档、图片、音乐等等。
d 目录文件。
c 字符设备文件,Linux 驱动里面的字符设备驱动,比如串口设备,音频设备等。
b 块设备文件,存储设备驱动,比如硬盘,U 盘等。
l 符号连接文件,相当于Windwos 下的快捷方式。
s 套接字文件。
p 管道文件,主要指 FIFO 文件。
我们后面学习Linux 驱动开发的时候基本是在和字符设备文件和块设备文件打交道。