【Linux】find指令和grep指令!!!

doctor_xiong發表於2018-02-03

find指令的grep指令都可以在指定的路徑或者指定的檔案裡面查詢指定的內容;
find和grep的區別:

  • find是在指定的路徑或者目錄裡面查詢指定的檔案。
  • grep是在指定的檔案裡面查詢指定的內容

    find:

find  【path】 【option】 filename

find的可以在【path】路徑裡面查詢指定的檔名。
例如:
這裡寫圖片描述
常用的選項:

-name :可以根據檔案的名稱來查詢
-size :可以根據檔案的大小來查詢
-user :根據檔案的擁有者來查詢
-empty :在指定的路徑下查詢為空的檔案和目錄

find—-exec選項:
在需要將find指令查詢出來的檔案目錄進行操作的時候需要用到-exec選項。
例如,將find查詢出來的內容進行輸出:

find . -name  filename -exec ls -l {} \;

這裡寫圖片描述
注:
find指令將在指定路徑查詢到的內容作為ls的輸入,使用-exec選項替換。在-exec選項的後面是多find查詢到的內容的操作命令,在命令的後面是{}—–將find的內容是輸出,在使用-exec選項的命令最後面必須使用;作為結尾,但是在linux裡面;有很多的含義,所以需要在;前面加上一個\;

grep:
grep指令是在指定的檔案裡面查詢指定的內容。

grep 【option】【目標字串】 filename

常用選項:
-c:只輸出匹配行的計數。
-i:不區分大小寫
-h:查詢多檔案時不顯示檔名。
-l:查詢多檔案時只輸出包含匹配字元的檔名。
-n:顯示匹配行及行號。
-s:不顯示不存在或無匹配文字的錯誤資訊。
-v:顯示不包含匹配文字的所有行。
這裡寫圖片描述

含有正規表示式的grep:

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

    例如:
    grep -n ‘[^h]hehe’ filename //在filname裡面查詢hehe為字尾的內容
    grep -n [0-9] filename //在filename裡面查詢含有數字的內容
    grep -n ‘^the’ filename //在filename裡面查詢the開頭的內容
    grep -n ‘$.’ filename //在filename裡面查詢.結尾的內容

find和grep結合使用

要是find指令和grep指令結合使用,需要使用感到命令,管道命令可以將前面的指令的輸出內容作為後面的指令的輸入,如果使用定的指令將檔案的路徑找到,然後使用grep命令在指定的檔案裡面查詢相應的木白哦內容。

例如:

使用命令將指定檔案的裡面的指定內容輸出:

find . -name "heap.h" | xargs grep -n 'heap'

這裡寫圖片描述

注:這裡的xargs是替換工具,可以將標準輸入轉換成命令列引數。

相關文章