歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

grep && find命令用法

Linux下搜索文件內容常用grep,搜索文件信息使用find

一、 grep

搜索文本的命令

命令格式: grep [options]... pattern [file]...
命令格式: grep 查找規則... 正則表達式 查看文件

1.1 查找規則

options 解釋 -i 不區分大 小寫(只適用於單字符) -r 遍歷匹配 -w 整字匹配 -l 查詢多文件時只輸出包含匹配字符的文件名 -c 只輸出匹配行的計數 -n 顯示匹配行及行號 -s 不顯示不存在或無匹配文本的錯誤信息 -h 查詢多文件時不顯示文件名 -v 顯示不包含匹配文本的所有行

1.2 正則表達式

pattern正則表達式主要參數:

  • \: 忽略正則表達式中特殊字符的原有含義。
  • ^:匹配正則表達式的開始行。
  • $: 匹配正則表達式的結束行。
  • <:從匹配正則表達 式的行開始。
  • >:到匹配正則表達式的行結束。
  • [ ]:單個字符,如[A]即A符合要求 。
  • [ - ]:范圍,如[A-Z],即A、B、C一直到Z都符合要求 。
  • . :所有的單個字符。
  • * :有字符,長度可以為0.

1.3 實例

  • 忽略大小寫搜索

      grep -i "androiD"  logcat.txt   //從logcat.txt文件中,搜索包含android的文本行,不區分大小寫
    
  • 遍歷搜索,且不顯示無匹配信息

      grep -rs "android" .   //從當前目錄下,遍歷所有的文件,搜索包含android的文本行
    
  • 整字匹配搜索 grep -w “android” logcat.txt //從logcat.txt文件中,搜索包含單詞android的文本行 grep -w “android | ios” logcat.txt //從logcat.txt文件中,搜索包含單詞android或者ios的文本行

  • 只列出文件名

      grep -l "android" .
    
  • 統計字符出現次數

      grep -c "android" .
    
  • 顯示字符出現所在行

      grep -n "android“ .
    

二、 find

搜索文件的命令

命令格式  find pathname -options [ actions]
命令格式  find 查找目錄  -查找規則 [執行操作]

2.1 查找目錄

(1) 如果不寫,默認為當前路徑; (2) 支持多個路徑,目錄直接用空格間隔;

find . -name demo

2.2 查找規則

2.2.1 根據文件名(name)

-name //根據文件名查找,區分大小寫 -iname //根據文件名查找,不區分大小寫

通配符說明: (1)* 匹配任意的若干個字符 (2)? 匹配任意的單個字符 (3)[] 匹配括號內的任意一個字符

find /data -name dalvi*
find /data -name dalvik?cache
find /data -name dalvik-cach[abe]

2.2.2 根據文件類型(type)

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

例如:

find -type f //查看文件類型

2.2.3 根據目錄深度(depth)

  • -maxdepth n: 查找最大深度為n
  • -mindepth m: 查找最小深度為m

2.2.4 根據文件大小(size)

單位:c(小寫), k(小寫), M(大寫), G(大寫)

-size +10M: 查找大於10M的文件 -size -2k: 查找小於2k的文件 -empty: 查找大小為0的文件或空目錄

2.2.5 根據文件權限(perm)

例如:

find -perm 777 //查找權限為777的文件

2.2.6 根據文件所屬用戶和組

  • -user: 根據屬主來查找文件
  • -group: 根據屬組來查找文件

2.2.7 根據uid和gid

  • -uid 500: 查找uid是500 的文件
  • -gid 1000: 查找gid是1000的文件

2.2.8 根據時間

可以通過stat命令來查看文件的時間,下列是按照文件的各種時間來查找文件:

  • -mtime -n +n: 根據更改(modify)時間,-n指n天以內,+n指n天以前
  • -atime -n +n: 根據訪問(access)時間,-n指n天以內,+n指n天以前
  • -ctime -n +n: 根據創建(create)時間,-n指n天以內,+n指n天以前
  • -mmin -n +n: 根據更改(modify)時間,-n指n分鐘以內,+n指n分鐘以前
  • -amin -n +n: 根據訪問(access)時間,-n指n分鐘以內,+n指n分鐘以前
  • -cmin -n +n: 根據創建(create)時間,-n指n分鐘以內,+n指n分鐘以前

2.2.9 多條件連接

  • -a: 兩個條件同時滿足(and)
  • -o: 兩個條件滿足其一(or)
  • -not: 對條件取反(not)

例如,查找當前路徑下,以a開頭,並排除掉以b結尾的文件或文件夾:

find -name a* -not -name *b

2.3 執行操作

  • -print 匹配文件輸出到標准輸出,默認操作
  • -ls 查找到的結果,以ls方式顯示

     find -name app -ls
    
  • -ok [command] 查找完成後,執行command執行,詢問執行

      find -name app -ok cat {} \;   //注意:{}前後有空格
    
  • -exec [command] 查找完成後,執行command執行,直接執行

      find -name app  -exec ls {} \;
    
Copyright © Linux教程網 All Rights Reserved