find和grep的使用

2022-07-19 16:00:48 字數 3301 閱讀 3239

1、find命令的使用

在linux中可以使用find命令在指定的目錄下查詢檔案。任何位於引數之前的字串都將被視為欲查詢的目錄名,當使用該命令時,不設定任何引數,則find命令將在當前目錄下查詢子目錄與檔案,並將查詢到的檔案進行全部顯示。

(1)命令語法

find命令的語法如下:

find path -option [-print] [-exec -ok command] {} \;

find根據下面規則判斷path和exprssion,在命令列上的第乙個-(),之前的部分為path,之後的是expression,如果path為空字串,則使用當前路徑,如果expression是空字串,則使用-print為預設的expression。

(2)常用選項說明

-mount,-xdev:只檢查和指定目錄在同一檔案系統下的檔案,避免列出其它檔案系統的檔案

-amin n:在過去n分鐘內被讀取過的檔案

-anewer file:比檔案file更晚被讀取過的檔案

-atime n:在過去n天內被讀取過的檔案

-cmin n:在過去n分鐘內被修改過的檔案

-empty:空的檔案

-gid n or -group name:gid是n或group是name的檔案

-ipath p,-path p:路徑名稱符合p的檔案,ipath會忽略大小寫

-name name,-iname name:檔名稱符合name的檔案,iname會忽略大小寫

-size n:檔案大小是n單位的檔案

-type c:檔案型別是c的檔案

-pid n:process id是n的檔案

(3)例項

將目前目錄及其子目錄下所有以.c結尾的檔案列出來:

$ find . -name 「*.c」

將目前目錄及其子目錄中的所有一般檔案列出:

$ find . -type f

將當前目錄及其子目錄下所有最近20天內更新過的檔案列出:

$ find . -ctime -20

查詢/var/log目錄中更改時間在7日以前的普通檔案,並在刪除之前詢問它們:

$ find /var/log -type f -mtime +7 ok rm {} \;

查詢當前目錄中檔案屬主具有讀寫許可權,並且檔案所屬組合其他使用者具有讀許可權的檔案:

$ find . -type f -perm 644 -exec ls -l {} \;

查詢系統中所有檔案長度為0的為普通檔案,並列出它們的完整路徑:

$ find / -type f –size 0 –exec ls –l {} \;

2、grep命令的使用

linux中grep命令用於查詢檔案中符合條件的字串,grep指令用於查詢內容包含指定的範本樣式的檔案,如果發現某檔案的內容符合指定的範本樣式,預設grep指令將會把含有範本樣式的哪一列顯示出來,若不指定任何檔名稱,或是所給與的檔名」-」,則grep將會從標準輸入裝置讀取資料。

(1)命令語法

grep [-abcefghhillnqrsvvwxy][-a《顯示列數》][-b《顯示列數》][-c《顯示列數》][-d《進行動作》][-e《範本樣式》][-f《範本檔案》][--help][範本樣式][檔案或目錄...]

(2)常用選項說明

-a:不要忽略二進位制資料。

-a《顯示列數》:除了顯示符合範本樣式的那一行之外,並顯示該行之後的內容。

-b:在顯示符合範本樣式的那一行之外,並顯示該行之前的內容。

-c:計算符合範本樣式的列數。

-c《顯示列數》或-《顯示列數》:除了顯示符合範本樣式的那一列之外,並顯示該列之前後的內容。

-d《進行動作》:當指定要查詢的是目錄而非檔案時,必須使用這項引數,否則grep命令將回報資訊並停止動作。

-e《範本樣式》:指定字串作為查詢檔案內容的範本樣式。

-e :將範本樣式為延伸的普通表示法來使用,意味著使用能使用擴充套件正規表示式。

-f:將範本樣式視為固定字串的列表。

-g:將範本樣式視為普通的表示法來使用。

-h:在顯示符合範本樣式的那一列之前,不標示該列所屬的檔名稱。

-h:在顯示符合範本樣式的那一列之前,標示該列的檔名稱。

-i:忽略字元大小寫的差別。

-l:列出檔案內容符合指定的範本樣式的檔名稱。

-l:列出檔案內容不符合指定的範本樣式的檔名稱。

-n:在顯示符合範本樣式的那一列之前,標示出該列的編號。

-q:不顯示任何資訊。

-r/-r:此引數的效果和指定「-d recurse」引數相同。

-s:不顯示錯誤資訊。

-v:反轉查詢。

-w:只顯示全字符合的列。

-x:只顯示全列符合的列。

-y:此引數效果跟「-i」相同。

-o:只輸出檔案中匹配到的部分。

(3)例項

在檔案中搜尋乙個單詞,命令返回乙個包含」match_pattern」的文字行:

$ grep

match_pattern file_name

or$

grep 「match_pattern」 file_name

在多個檔案中查詢:

$ grep 「match_pattern」 file1 file2 file3 …

輸出除之外的所有行:

$ grep -v 「match_pattern」 file_name

標記匹配顏色:

$ grep 「match_pattern」 file_name –color=auto

使用正規表示式:

$ grep -e 「[1-9]+」

只輸出檔案中匹配到的部分:

$ echo this is a test line. | grep -o -e 「[a-z]+\.」

統計文字或者文字中包含匹配字串的行數:

$ grep -c 「text」 file_name

輸出包含匹配字串的行數:

$ grep 「text」 -n file_name

搜尋多個檔案並查詢匹配檔案在哪些檔案中:

$ grep –l 「text」 file1 file2 file3 …

在多級目錄中對文字進行遞迴搜尋:

$ grep 「text」 . -r -n

參考:

find和grep的使用

1 find 語法格式 find path options tests actions path 是路徑,可以是絕對路徑 相對路徑,或者多個路徑。options 下面列出一些主要選項 還可以使用操作符來組合這些測試項。可以使用括號來強制測試和操作符的優先順序,但是要注意使用使用反斜槓 來引用括號,以...

find 和grep的差異

find是利用檔名和檔案屬性,來找檔案的,grep是對檔案內容逐行掃瞄,來找匹配的內容。find可以找目錄,找檔案,具體方式如下 一 find 命令格式說明 path find命令查詢的目錄路徑。print find命令將匹配到的檔案輸出到標準輸出。exec find 命令對匹配的檔案執行該引數所給...

linux的grep和find命令

在linux下面工作,有些命令能夠大大提高效率。本文就向大家介紹find grep命令,他哥倆可以算是必會的linux命令,我幾乎每天都要用到他們。本文結構如下 grep命令 find命令是乙個無處不在命令,是linux中最有用的命令之一。find命令用於 在乙個目錄 及子目錄 中搜尋檔案,你可以指...