1. 程式人生 > >Linux筆記 find和grep命令

Linux筆記 find和grep命令

find命令用於搜尋檔案。其完整語法為:find [path] [options] [tests] [actions]

path是要搜尋的路徑,可以是絕對路徑也可以是相對路徑。

options有許多選項可用,以下列出一些主要的選項

選項含義

                   -depth                                     在檢視目錄本身之前先搜尋目錄的內容

                   -follow                                   跟隨符號連結

                   -maxdepths  N                    

最多允許搜尋N層目錄

                   -mout(-xdev)                      不搜尋其他檔案系統中的目錄

tests(測試)部分:可以提供給find命令的測試非常多,每種測試返回的結果有兩種可能:truefalsefind開始工作時候,它按照順序將定義的每種測試依次應用到它搜尋到的每個檔案上。如果一個測試返回falsefind命令就停止處理它當前找到的這個檔案,並繼續搜尋。如果一個測試返回truefind命令將繼續下一個測試或對當前檔案採取行動。最常用的測試如下表:

測試含義

                   -atime N                                         

檔案在N天之前被最後訪問過

                   -mtime N                                         檔案在N天之前被最後修改過

                   -name  pattern                                檔名(不包括路徑名)匹配提供的模式pattern,為了確保                                                                         pattern被傳遞給find命令而不是shell來處理,pattern必須總是用引號括起

                   -newer otherfile                               檔案比otherfile檔案更新

                   -type          c                                             檔案的型別為cc是一個特殊型別。最常見的是d(目錄)和                                                                     f(普通檔案)。

                   -user username                                檔案的擁有者是制定的使用者username

可以用操作符來組合測試。大多數操作符有兩種格式:短格式和長格式

操作符,短格式操作符,長格式 含義

                            !                                             -not                      測試取反

                            -a                                            -and                     兩個測試都必須為真

                            -o                                           -or                       兩個測試有一個必須為真

還可以通過使用圓括號來強制測試和操作符的優先順序。由於圓括號對於shell來說有其特殊含義,所以必須使用反斜線來引用圓括號。此外,如果你在檔名處使用的是匹配模式,你就必須在模式上使用引號以確保模式沒有被shell擴充套件,而是直接傳遞給find命令。例如:  “搜尋的檔案比檔案X更新,或者檔名以下劃線開頭”                   \(-newer X -o -name “_*”\)

在發現匹配指定條件的檔案之後,可以執行的最常用的動作:

動作含義

                   -exec command                      執行一條命令。這是最常見的動作之一。該動作必須使用\;字元對來結束

                   -ok  command                      -exec類似,但它在執行命令之前會針對每個要處理的檔案,提示使用者進行確認。這個動作必須使用\;字元結束

                   -print                                      列印檔名

                   -ls                                           對當前檔案使用命令 ls -dils

另外魔術字串{}-exec-ok命令的一個特殊型別的引數,它將被當前檔案的完整路徑取代。

例:

         $ find . -newer while2 -type f -exec ls -l {} \;             搜尋比while2更新的且型別是普通檔案的檔案,搜尋到時列印該檔案的資訊

grep命令   (通用正則表示式解析器)。使用grep命令可在檔案中搜索字串。一種非常常見的用法是在使用find命令時,將grep作為傳遞給-exec的一條命令。

grep命令使用一個選項、一個要匹配的模式和要搜尋的檔案,語法如下所示:

         grep [options] PATTERN [FILES]

如果沒有提供檔名,則grep命令將搜尋標準輸入。Grep命令的一些主要選項如下:

選項含義

                   -c                                            輸出匹配行的數目,而不是輸出匹配的行

                   -E                                           啟用擴充套件表示式

                   -h                                           取消每個輸出行的普通字首,即匹配查詢模式的檔名

                   -i                                            忽略大小寫

                   -l                                            只列出包含匹配行的檔名,而不輸出真正的匹配行

                   -v                                           對匹配模式取反,即搜尋不匹配行而不是匹配行

例如:

[email protected]:~/code/Shell$ grep '#' she_*

she_1:#!/bin/sh

she_10:#!/bin/sh

she_11:#!/bin/sh

[email protected]:~/code/Shell$ grep -c '#' she_*

she_1:1

she_10:1

she_11:1

[email protected]:~/code/Shell$ grep -c -v '#' she_*

she_1:15

she_10:18

she_11:3

正則表示式:在使用正則表示式的過程中,一些字元是以特定方式處理的。最常使用的特殊字元如下:

字元含義

         ^                                                      指向一行的開頭

         $                                                      指向一行的結尾

         .                                                       任意單個字元

         []                                                     方括號內包含一個字元範圍,其中任何一個字元都可以被匹配,例如字元範圍a~e,或在字元範圍前加上^符號表示使用反向字元範圍,即不匹配指定範圍內的字元

如果想將上述字元用作普通字元,就需要在它們前面加上\字元。

在方括號中還可以使用一些有用的特殊匹配模式,如下表:

匹配模式含義

         [:alnum:]                                          字母與數字字元

         [:alpha:]                                           字母

         [:ascii:]                                            ASCII字元

         [:blank:]                                           空格或製表符

         [:cntrl:]                                            ASCII控制字元

         [:digit:]                                            數字

         [:graph:]                                          非控制、非空格字元

         [:lower:]                                          小寫字母

         [:print:]                                            可列印字元

         [:punct:]                                           標點符號字元

         [:space:]                                           空白字元,包括垂直製表符

         [:upper:]                                          大寫字母

         [:xdigit:]                                          十六進位制數字

如果指定了用於擴充套件匹配的-E選項,那些用於控制匹配完成的其他字元可能會遵循正則表示式規則。對於grep命令來說,我們還需要在這些字元之前加上\字元。

選項含義

         ?                                                      匹配是可選的,最多匹配一次

         *                                                      必須匹配0次或多次

         +                                                      必須匹配1次或多次

         {n}                                                  必須匹配n

         {n,}                                                 必須匹配n次或n次以上

         {n, m}                                             匹配次數在nm之間,包括nm

:

         grep e$ words2.txt                          查詢以字母e結尾的行

         grep a[[:blank:]] word2.txt              查詢以a結尾的單詞

         grep Th.[[:space:]] word2.txt          查詢以Th開頭的由3個字母組成的單詞

         grep -E [a-z]\{10\} word2.txt          查詢只有10個字元長的全部由消協字母組成的單詞

相關推薦

Linux筆記 findgrep命令

find命令用於搜尋檔案。其完整語法為:find [path] [options] [tests] [actions] path是要搜尋的路徑,可以是絕對路徑也可以是相對路徑。 options有許多選項可用,以下列出一些主要的選項 選項含義                 

linux下的findgrep命令

  一、區別 1. find 命令主要是用來查詢關於檔名字,檔案最後修改時間,檔案大小等資訊的。 2.grep 命令主要是用來查詢關於檔案(文件)具體內容,會對檔案的每一行按照給定的模式(patter)進行匹配查詢,並打印出該字串所在行的內容。 二、find命令 我

centos使用findgrep命令

find grep 作為一個ITer需要竟要使用到命令行,find和grep命令了解非常必要,下面說些常用方法find查找文件find ./ -name 192.168.1.166_server_log #根據文件名查找find . -type f -name "*.phtml"

linuxfind grep 的區別??

col linu 它的 -s glob 操作 功能 相關 round Linux 系統中 grep 命令是一種強大的文本搜索工具,它能使用正則表達式搜索文本,並把匹配的行打印出來。grep 全稱是 Global Regular Expression Print,表示

Linuxfind命名grep命令的結合使用

找到當前目錄(及子目錄)下所有的.py檔案 find . -name '*.py' 統計當前目錄(及子目錄)下所有.py檔案的總行數 find . -name '*.py' | xargs wc -l 統計當前目錄(及子目錄,除目錄./a/b/之

find & grep 命令 in linux(轉)

for one group mathjax 現在 preview 管道 splay 提高效率 Linux下面工作,有些命令能夠大大提高效率。本文就向大家介紹find、grep命令,他哥倆可以算是必會的linux命令,我幾乎每天都要用到他們。本文結構如下:

Linux findgrep命令詳細用法

標準輸出 獲取參數 返回 管道 每一個 作用 實例 文件名 opts 在linux下面工作,有些命令能夠大大提高效率。本文就向大家介紹find、grep命令,他哥倆可以算是必會的linux命令,我幾乎每天都要用到他們。本文結構如下:find命令 find命令的一般形式

Linux Shell基礎 管道符grep命令

概述 管道符:管道符使用"丨"代表。如"命令1丨命令2"。表示命令 1 的正確輸出作為命令 2 的操作物件。命令 1 必須有正確輸出,而命令 2 必須可以處理命令 1 的輸出結果。 grep命令:在檔案中提取和匹配符合條件的字串行。 管道符 1. 在使用"||"命令査看/etc/ 目錄時顯示的內容非常

linux findlocate命令詳解

linux中find命令優點是能實現精確查詢,缺點對系統資源耗費大。 一:檔案查詢命令,按檔名稱查詢. 官方要求檔名需要加雙引號,保證搜尋的完整性。 find 目錄 -iname " init "(不區分大小寫) find 目錄 -name “init

linux下ps命令 grep命令用法

inux上程序有5種狀態: 1. 執行(正在執行或在執行佇列中等待) 2. 中斷(休眠中, 受阻, 在等待某個條件的形成或接受到訊號) 3. 不可中斷(收到訊號不喚醒和不可執行, 程序必須等待直到有中斷髮生) 4. 僵死(程序已終止, 但程序描述符存在, 直到父程序

linux系統命令列基本操作——findvim命令

因為student使用者許可權問題會有以下輸出 find: ‘/etc/pki/CA/private’: Permission denied        ##沒有進入權力,報錯 find: ‘/etc/pki/rsyslog’: Permission denied find: ‘/etc/audit’: P

Linux whereis、findlocate命令找不到檔案

命令簡介 ●whereis 功能:定位檔案所在的目錄 使用whereis命令可以定位常用命令的位置: [root@yanghsia root]#whereis ls (# 定位ls命令的位置) ls:/bin/ls

Linux findgrep的區別

1.find:查詢檔案或目錄 語法: find 查詢位置 檔名或目錄名 如:在 /root/luojiahui目錄下查詢index.htm find /root/luojiahui index.htm

linux,rmpyum命令

所有 信息 解壓 python alt 出現 httpd zlib 光驅 作業一:rpm命令1) 掛載光盤文件到/media目錄 2) 進去/media目錄下的Packages目錄 3) 查看系統已安裝的所有rpm包 4) 查看系統是否安裝dhcp軟件包

linux的dudf命令

documents master root權限 linux 今天也有同學問我Linux下查看目錄大小的命令,現在也將前陣子學習到du/df兩個命令總結一下吧。前陣子測試工作中有遇到過由於磁盤空間滿導致程序無法執行到情況,所以使用了df和du兩個命令。du查看目錄大小,df查看磁盤使用情況。我常

Linux中moreless命令用法

時間 quit ron 忽略 分頁 page tab 易用 linux中 一、more命令 more功能類似 cat ,cat命令是整個文件的內容從上到下顯示在屏幕上。 more會以一頁一頁的顯示方便使用者逐頁閱讀,而最基本的指令就是按空白鍵(space)就往下一頁顯示,按

Linux 系統lsblkblkid命令

所有 mapper dev name xfs 塊設備 swa 3-9 per lsblk命令用於以樹狀的格式顯示所有可用的塊設備信息: [[email protected]/* */ ~]# lsblk NAME MAJ:MIN RM S

Linux中topfree命令(6/15)

都是 常見 disk 效率 傳輸數據 alt 提高 需要 讀寫 top:命令提供了實時的對系統處理器的狀態監視.它將顯示系統中CPU最“敏感”的任務列表. 該命令可以按CPU使用.內存使用和執行時間對任務進行排序; 而且該命令的很多特性都可以通過交互式命令或者在個人定制文件

Linux中topfree命令詳解(轉)

機器 負載 選擇 就會 image 的區別 包括 linux中 占用內存 top:命令提供了實時的對系統處理器的狀態監視.它將顯示系統中CPU最“敏感”的任務列表. 該命令可以按CPU使用.內存使用和執行時間對任務進行排序; 而且該命令的很多特性都可以通過交互式命令或者在個

Linux的bgfg命令 ---讓程序在前臺後臺之間切換

前臺 現在 基本上 之間 怎麽 服務 bnu top 後臺運行 Linux的bg和fg命令 我們都知道,在 Windows 上面,我們要麽讓一個程序作為服務在後臺一直運行,要麽停止這個服務。而不能讓程序在前臺後臺之間切換。而 Linux 提供了 fg 和 bg 命令,讓我們