find grep 的使用

  • find的使用方法

find [path...] [expression]shell

  • path:find命令所查找的目錄路徑。例如用.來表示當前目錄,用/來表示系統根目錄express

  • expression:expression能夠分爲——「-options [-print -exec -ok ...]」apache

  • -options,指定find命令的經常使用選項,下節詳細介紹安全

  • -print,find命令將匹配的文件輸出到標準輸出app

  • -exec,find命令對匹配的文件執行該參數所給出的shell命令。相應命令的形式爲'command' {  } \;,注意{   }和\;之間的空格 
    find ./ -size 0 -exec rm {} \; 刪除文件大小爲零的文件 (還能夠以這樣作:rm -i `find ./ -size 0`  或 find ./ -size 0 | xargs rm -f &) 
    爲了用ls -l命令列出所匹配到的文件,能夠把ls -l命令放在find命令的-exec選項中:find . -type f -exec ls -l {  } \; 
    在/logs目錄中查找更改時間在5日之前的文件並刪除它們:find /logs -type f -mtime +5 -exec rm {  } \;ui

-ok,和-exec的做用相同,只不過以一種更爲安全的模式來執行該參數所給出的shell命令,在執行每個命令以前,都會給出提示,讓用戶來肯定是否執行。 
find . -name "*.conf"  -mtime +5 -ok rm {  } \; 在當前目錄中查找全部文件名以.LOG結尾、更改時間在5日以上的文件,並刪除它們,只不過在刪除以前先給出提示spa

經常使用的參數:

  • -name 
    按照文件名查找文件。 
    find /dir -name filename  在/dir目錄及其子目錄下面查找名字爲filename的文件 
    find . -name "*.c" 在當前目錄及其子目錄(用「.」表示)中查找任何擴展名爲「c」的文件regexp

  • -perm 
    按照文件權限來查找文件。 
    find . -perm 755 –print 在當前目錄下查找文件權限位爲755的文件,即文件屬主能夠讀、寫、執行,其餘用戶能夠讀、執行的文件orm

  • -prune 
    使用這一選項可使find命令不在當前指定的目錄中查找,若是同時使用-depth選項,那麼-prune將被find命令忽略。 
    find /apps -path "/apps/bin" -prune -o –print 在/apps目錄下查找文件,但不但願在/apps/bin目錄下查找 
    find /usr/sam -path "/usr/sam/dir1" -prune -o –print 在/usr/sam目錄下查找不在dir1子目錄以內的全部文件it

  • -user 
    按照文件屬主來查找文件。 
    find ~ -user sam –print 在$HOME目錄中查找文件屬主爲sam的文件

  • -group 
    按照文件所屬的組來查找文件。 
    find /apps -group gem –print 在/apps目錄下查找屬於gem用戶組的文件 

  • -mtime -n +n 
    按照文件的更改時間來查找文件, - n表示文件更改時間距如今n天之內,+ n表示文件更改時間距如今n天之前。 
    find / -mtime -5 –print 在系統根目錄下查找更改時間在5日之內的文件 
    find /var/adm -mtime +3 –print 在/var/adm目錄下查找更改時間在3日之前的文件

  • -nogroup 
    查找無有效所屬組的文件,即該文件所屬的組在/etc/groups中不存在。 
    find / –nogroup -print

  • -nouser 
    查找無有效屬主的文件,即該文件的屬主在/etc/passwd中不存在。 
    find /home -nouser –print

  • -newer file1 ! file2 
    查找更改時間比文件file1新但比文件file2舊的文件。

  • -type 
    查找某一類型的文件,諸如: 
    b - 塊設備文件。 
    d - 目錄。 
    c - 字符設備文件。 
    p - 管道文件。 
    l - 符號連接文件。 
    f - 普通文件。 
    find /etc -type d –print 在/etc目錄下查找全部的目錄 
    find . ! -type d –print 在當前目錄下查找除目錄之外的全部類型的文件 
    find /etc -type l –print 在/etc目錄下查找全部的符號連接文件

  • -size n:[c] 查找文件長度爲n塊的文件,帶有c時表示文件長度以字節計。 
    find . -size +1000000c –print 在當前目錄下查找文件長度大於1 M字節的文件 
    find /home/apache -size 100c –print 在/home/apache目錄下查找文件長度剛好爲100字節的文件 
    find . -size +10 –print 在當前目錄下查找長度超過10塊的文件(一塊等於512字節)

  • -depth:在查找文件時,首先查找當前目錄中的文件,而後再在其子目錄中查找。 
    find / -name "CON.FILE" -depth –print 它將首先匹配全部的文件而後再進入子目錄中查找 

  • -mount:在查找文件時不跨越文件系統mount點。  
    find . -name "*.XC" -mount –print 從當前目錄開始查找位於本文件系統中文件名以XC結尾的文件(不進入其餘文件系統)

  • -follow:若是find命令遇到符號連接文件,就跟蹤至連接所指向的文件。

  • grep命令的經常使用選項及實例

-?

同時顯示匹配行上下的?行,如:grep -2 pattern filename同時顯示匹配行的上下2行。

-b,--byte-offset

打印匹配行前面打印該行所在的塊號碼。

-c,--count

只打印匹配的行數,不顯示匹配的內容。

-f File,--file=File

從文件中提取模板。空文件中包含0個模板,因此什麼都不匹配。

-h,--no-filename

當搜索多個文件時,不顯示匹配文件名前綴。

-i,--ignore-case

忽略大小寫差異。

-q,--quiet

取消顯示,只返回退出狀態。0則表示找到了匹配的行。

-l,--files-with-matches

打印匹配模板的文件清單。

-L,--files-without-match

打印不匹配模板的文件清單。

-n,--line-number

在匹配的行前面打印行號。

-s,--silent

不顯示關於不存在或者沒法讀取文件的錯誤信息。

-v,--revert-match

反檢索,只顯示不匹配的行。

-w,--word-regexp

若是被\<和\>引用,就把表達式作爲一個單詞搜索。


示例:

find . -name 'test.js' | grep -ani 'value1'     在當前目錄下的test.js中尋找value1值得行,並顯示行號。

ls -al | grep '^-' | wc -l        計算當前目錄下的文件個數

ls -al | grep '^d' | wc -l        計算當前目錄下的子目錄個數

ls -lR | grep '^-' | wc -l         計算當前目錄下以及全部子目錄下全部文件個數

相關文章
相關標籤/搜索