Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux 文本搜索利器 grep 與文件查找神器 find 完整用法速查手冊

編輯:Linux 教學

grep 專注文件**內容**模式匹配,find 專注文件**元數據**(名稱、類型、權限、時間等)查找。兩者結合可解決 90% 以上的 Linux 搜索場景。本文系統整理核心參數、正則語法、實戰範例與組合技巧,適合作為桌邊速查手冊。

一、grep —— 文本模式搜索

命令格式

grep [選項]... 模式 [文件]...

1.1 常用選項速查表

選項說明
-i忽略大小寫(僅單字符生效)
-r遞歸遍歷子目錄
-w整詞匹配
-l僅輸出包含匹配行的文件名
-c僅輸出匹配行計數
-n顯示匹配行號
-s抑制不存在/無匹配錯誤輸出
-h多文件查詢時不顯示文件名
-v反向匹配(輸出不包含模式的行)

1.2 正則表達式核心元字符

  • \:轉義特殊字符
  • ^:行首錨定
  • $:行尾錨定
  • \<:詞首邊界
  • \>:詞尾邊界
  • [...]:字符集合,如 [A]
  • [x-y]:字符範圍,如 [A-Z]
  • .:任意單字符
  • *:前導字符出現 0 次或多次

1.3 實戰範例

# 忽略大小寫搜索
grep -i "androiD" logcat.txt

# 遞歸搜索並靜默錯誤
grep -rs "android" .

# 整詞匹配單詞或多選
grep -w "android" logcat.txt
grep -w "android\|ios" logcat.txt

# 僅列出文件名
grep -l "android" .

# 統計出現次數
grep -c "android" .

# 顯示行號
grep -n "android" .

二、find —— 文件元數據查找

命令格式

find [路徑] [選項] [動作]
  • 路徑缺省為當前目錄,支持多路徑空格分隔

2.1 按名稱查找

find /data -name dalvi*           # 區分大小寫
find /data -iname dalvi*          # 忽略大小寫
find /data -name dalvik?cache     # ? 匹配單字符
find /data -name dalvik-cach[abe] # [] 匹配任一字符

2.2 按類型查找

  • -type f 普通文件
  • -type d 目錄
  • -type l 符號鏈接
  • -type b/c/p/s 塊/字符設備、管道、socket

2.3 按深度限制

find -maxdepth 3 -name "*.conf"   # 最大 3 層
find -mindepth 2 -type d          # 最小 2 層

2.4 按大小查找

find -size +10M   # 大於 10MB
find -size -2k    # 小於 2KB
find -empty       # 空文件/空目錄

單位:c(byte) k(KiB) M(MiB) G(GiB)

2.5 按權限/屬主/時間查找

find -perm 777
find -user nginx
find -group www
find -uid 500
find -gid 1000
find -mtime -7    # 7 天內修改過
find -mtime +30   # 30 天前修改
find -mmin -60    # 60 分鐘內修改

-atime 訪問時間,-ctime 狀態改變時間。

2.6 多條件組合

find -name "a*" -not -name "*b"   # 以 a 開頭且不以 b 結尾
find -name "*.log" -a -size +10M  # 同時滿足(AND)
find -name "*.tmp" -o -name "*.bak" # 滿足其一(OR)

2.7 執行動作

find -name "app" -print          # 默認輸出路徑
find -name "app" -ls             # ls -l 風格詳細信息
find -name "app" -ok cat {} \;   # 逐個確認執行
find -name "app" -exec ls {} \;  # 直接批量執行

注意 {} 前後需空格,\; 結尾不可省略。


三、組合招:grep + find 黃金搭檔

# 在當前目錄下所有 .c 文件中搜索 TODO 註釋
find . -name "*.c" -exec grep -n "TODO" {} \;

# 遞歸查找包含 "error" 的日志文件並顯示行號
find /var/log -name "*.log" -exec grep -Hn "error" {} \;

總結

grep 搜內容,find 搜屬性。熟練掌握兩者核心參數與組合用法,能將「大海撈針」轉化為精準定位,大幅提升排障與開發效率。

Copyright © Windows教程網 All Rights Reserved