天天看點

linux如何搜全部檔案含有字元串,Linux下查找目錄中全部檔案中含有某個字元串,而且隻列印出檔案名...

假設含有“hello”web

find .|xargs grep -ri "hello" -l

這個能夠,我測試了簡化的:grep -l "hello" *也行。

xargs正規表達式

grep的經常使用選項:grep [option] pattern fileshell

-V: 列印grep的版本号

-E: 解釋PATTERN做為擴充正規表達式,也就至關于使用egrep。 或操做

-F : 解釋PATTERN做為固定字元串的清單,由換行符分隔,其中任何一個都要比對。也就至關于使用fgrep。

-G: 将範本樣式視為普通的表示法來使用。這是預設值。加不加都是使用grep。

比對控制選項:svg

-e : 使用PATTERN做為模式。這能夠用于指定多個搜尋模式,或保護以連字元( - )開頭的圖案。指定字元串作為查找檔案内容的樣式。

-f : 指定規則檔案,其内容含有一個或多個規則樣式,讓grep查找符合規則條件的檔案内容,格式為每行一個規則樣式。

-i : 搜尋時候忽略大小寫

-v: 反轉比對,選擇沒有被比對到的内容。

-w:比對整詞,精确地單詞,單詞的兩邊必須是非字元符号(即不能是字母數字或下劃線)

-x:僅選擇與整行徹底比對的比對項。精确比對整行内容(包括行首行尾那些看不到的空格内容都要徹底比對)

-y:此參數的效果和指定“-i”參數相同。

通常輸出控制選項:工具

-c: 抑制正常輸出;而是為每一個輸入檔案列印比對線的計數。

--color [= WHEN]:讓關鍵字高亮顯示,如--color=auto

-L:列出檔案内容不符合指定的範本樣式的檔案名稱

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

-m num:當比對内容的行數達到num行後,grep中止搜尋,并輸出中止前搜尋到的比對内容

-o: 隻輸出比對的具體字元串,比對行中其餘内容不會輸出

-q:安靜模式,不會有任何輸出内容,查找到比對内容會傳回0,未查找到比對内容就傳回非0

-s:不會輸出查找過程當中出現的任何錯誤消息,-q和-s選項由于與其餘系統的grep有相容問題,shell腳本應該避免使用-q和-s,而且應該将标準和錯誤輸出重定向到/dev/null 代替。

輸出線字首控制:性能

-b:輸出每個比對行(或比對的字元串)時在其前附加上偏移量(從檔案第一個字元到該比對内容之間的位元組數)

-H:在每個比對行以前加上檔案名一塊兒輸出(針對于查找單個檔案),當查找多個檔案時預設就會輸出檔案名

-h:禁止輸出上的檔案名的字首。不管查找幾個檔案都不會在比對内容前輸出檔案名

--label = LABEL:顯示實際來自标準輸入的輸入做為來自檔案LABEL的輸入。這是特别在實作zgrep等工具時很是有用,例如gzip -cd foo.gz | grep --label = foo -H的東西。看到 也是-H選項。

-n:輸出比對内容的同時輸出其所在行号。

-T:初始标簽確定實際行内容的第一個字元位于制表位上,以便對齊标簽看起來很正常。在比對資訊和其前的附加資訊之間加入tab以使格式整齊。

上下文線控制選項:測試

-A num:比對到搜尋到的行以及該行下面的num行

-B num:比對到搜尋到的行以及該行上面的num行

-C num:比對到搜尋到的行以及上下各num行

檔案和目錄選擇選項:code

-a: 處理二進制檔案,就像它是文本;這至關于--binary-files = text選項。不忽略二進制的資料。

--binary-files = TYPE:若是檔案的前幾個位元組訓示檔案包含二進制資料,則假定該檔案為類型TYPE。預設狀況下,TYPE是二進制的,grep一般輸出一行消息二進制檔案比對,或者若是沒有比對則沒有消息。若是TYPE不比對,grep假定二進制檔案不比對;這至關于-I選項。若是TYPE是文本,則grep處理a二進制檔案,若是它是文本;這至關于-a選項。警告:grep --binary-files = text可能會輸出二進制的垃圾,若是輸出是一個終端和若是可能有讨厭的反作用終端驅動程式将其中的一些解釋為指令。

-D:若是輸入檔案是裝置,FIFO或套接字,請使用ACTION處理。預設狀況下,讀取ACTION,這意味着裝置被讀取,就像它們是普通檔案同樣。若是跳過ACTION,裝置為 默默地跳過。

-d: 若是輸入檔案是目錄,請使用ACTION處理它。預設狀況下,ACTION是讀的,這意味着目錄被讀取,就像它們是普通檔案同樣。若是跳過ACTION,目錄将靜默跳過。若是ACTION是recurse,grep将遞歸讀取每一個目錄下的全部檔案;這是至關于-r選項。

--exclude=GLOB:跳過基本名稱與GLOB比對的檔案(使用通配符比對)。檔案名glob可使用*,?和[...]做為通配符,和\引用通配符或反斜杠字元。搜尋其檔案名和GLOB通配符相比對的檔案的内容來查找比對使用方法:grep -H --exclude=c* "old" ./* c*是通配檔案名的通配符./* 指定須要先通配檔案名的檔案的範圍,必需要給*,否則就比對不出内容,(若是不給*,帶上-r選項也能夠比對)

--exclude-from = FILE:在檔案中編寫通配方案,grep将不會到比對方案中檔案名的檔案去查找比對内容

--exclude-dir = DIR:比對一個目錄下的不少内容同時還要讓一些子目錄不接受比對,就使用此選項。

--include = GLOB:僅搜尋其基本名稱與GLOB比對的檔案(使用--exclude下所述的通配符比對)。

-R ,-r :以遞歸方式讀取每一個目錄下的全部檔案; 這至關于-d recurse選項。

其餘選項:xml

--line-buffered: 在輸出上使用行緩沖。這可能會緻使性能損失。

--mmap:啟用mmap系統調用代替read系統調用

-U:将檔案視為二進制。

-z:将輸入視為一組行,每一行由一個零位元組(ASCII NUL字元)而不是a終止新隊。與-Z或--null選項同樣,此選項能夠與排序-z等指令一塊兒使用來處理任意檔案名。