find和grep的使用


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<范本文件>:指定范本文件,其內容有一個或多個范本樣式,讓grep查找符合范本條件的文件內容,格式為每一列的范本樣式。

-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

 

參考:

https://man.linuxde.net/find

https://man.linuxde.net/grep

https://www.runoob.com/linux/linux-comm-find.html

https://www.runoob.com/linux/linux-comm-grep.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM