Linux命令——find/grep

  這兩個命令寫起來會不少,這裏只簡單的寫一些東西,加深本身的印象。php

1、find正則表達式

  find命令主要做用是沿着文件層次結構向下遍歷,匹配符合條件的文件,並執行相應的操做。shell

1)命令格式函數

find [參數] [搜索路徑] [表達式]

默認路徑是當前目錄,默認表達式爲-print。表達式可能由操做符、選項、測試表達式以及動做構成。測試

2)經常使用參數(能夠用--help看)spa

-print     將匹配的文件輸出到標準輸出
-exec     對匹配的文件執行該參數所給出的 shell 命令
-name      按照文件名查找文件
-type     查找某一類型的文件
-prune     不在當前指定的目錄中查找,若是同時使用-depth 選項,那麼-prune將被忽略
-user     按照文件屬主來查找文件
-group      按照文件所屬的組來查找文件
-mtime -n/+n  按照文件的更改時間來查找文件,-n表示文件更改時間距如今小於n天,+n表示文件更改時間距如今大於n天code

舉例:xml

find .           #打印當前目錄下全部的文件目錄列表
find . -name "*.js"      #打印當前目錄全部以.js結尾的文件
find . ! -name "*.js" #打印當前目錄全部不以.js結尾的文件
find . \( -name "*.pdf" -or -name "*.txt" \) #打印當前目錄下全部以.txt或.pdf爲結尾的文件名

1.1  經過文件類型、權限、全部者及操做符來查找匹配文件。blog

  根據文件類型來查找文件,使用-type參數(b:塊設備文件,c:字符設備文件,d:目錄,f:普通文件,l:符號連接),根據文件權限查找文件,使用-perm參數,根據全部者查找文件使用-user參數。操做符就是通用的-and(默認爲-and,簡寫-a),-or(簡寫-o),-not(簡寫!)遞歸

舉例:

find . -type f -name "*.xml"          #打印當前目錄下全部以.xml爲結尾的文件
find . -type f -name "*.php" -prem 777     #打印當前目錄下全部權限爲777的php文件
find . -type f -user zichuan          #打印當前目錄下zichuan用戶擁有的全部文件
find . -type f \(! -perm 777 -and ! -perm 666\) #打印當前目錄下權限不是777和666的全部文件

 

2、grep

  這個命令會常常使用,畢竟是Linux三劍客之一。能夠用來找到文件中的匹配文本,而且可以接受正則表達式和通配符,同時能夠用多個grep命令選項來生成各類格式的輸出。它的工做方式是這樣的,在一個或多個文件中搜索字符串模板。若是模板包括空格,則必須被引用,模板後的全部字符串被看做文件名。搜索的結果被送到標準輸出,不影響原文件內容。還可用於shell腳本,由於 grep 經過返回一個狀態值來講明搜索的狀態,若是模板搜索成功,則返回 0,若是搜索不成功,則返回1,若是搜索的文件不存在,則返回2。咱們利用這些返回值就可進行一些自動化的文本處理工做。

1)命令格式

grep [參數] pattern [file]

2)經常使用參數

-c       計算找到 '搜尋字符串'(即 pattern) 的次數
-i       忽略大小寫的不一樣,因此大小寫視爲相同
-n      輸出行號
-v       反向選擇,打印不匹配的行
-r       遞歸搜索
--color=auto      將找到的關鍵詞部分加上顏色顯示

舉例:

grep "login" /zc/test --color=auto            #將/zc/test文件中出現login的行打印出來,關鍵詞部分加上顏色顯示 grep -v "login" /zc/test | grep -v "passwd"      #將/zc/passwd文件中沒有出現login和passwd的行打印出來 grep -r "main()"                       #在當前目錄下遞歸搜索文件中包含main()的文件,可用於查找某些函數位於哪些源代碼文件中

  grep和正則表達式的組合,就不概述了,平時更多的是經過其餘命令和管道符(|)來拼接。