Linux文件操作之文件查詢與搜索命令詳解
文件的查詢和搜索也是最常用的操作,在嵌入式 Linux 開發中常常需要在 Linux 源碼文件中查詢某個文件是否存在,或者搜索哪些文件都調用了某個函數等等。本節我們就講解兩個最常用的文件查詢和搜索命令:find 和 grep。
1、命令 find
find 命令用于在目錄結構中查找文件,其命令格式如下:
- find [路徑] [參數] [關鍵字]
路徑是要查找的目錄路徑,如果不寫的話表示在當前目錄下查找,關鍵字是文件名的一部分,主要參數如下:
-name
-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 驅動開發的時候基本是在和字符設備文件和塊設備文件打交道。