1. 程式人生 > >find、grep、wc使用方法簡單總結

find、grep、wc使用方法簡單總結

簡單總結一下,幾個常用的linux命令。


一、find

       用來查詢特定檔案,在linux下一切皆是檔案,因此十分有用。

       基本格式:find  path  expression  [-exec  command  {} \;] 

      會預設遍歷到子目錄。

1、find  /home/work/   -name  "*.cpp"    

       查詢/home/work/目錄下,所有檔名以.cpp結尾的檔案,當然目錄也會匹配出來。

2、find  /home/work/   -name  -type  f   "*.cpp"

        查詢/home/work/目錄下,所有檔名以.cpp結尾的普通檔案。

3、find  /home/work/   -iname  "*.cpp"  

      -iname 表示忽略大小寫,-name表示不忽略大小寫,精確匹配。

4、find  /home/work/   /etc/  /usr  -name  "*.cpp"

      查詢多個目錄下的.cpp檔案

     擴充套件 : find  /home/work/   /etc/  /usr  -name  "[ab].cpp"     查詢a.cpp或者b.cpp檔案

                  find  /home/work/   /etc/  /usr  -name  "?.cpp"           "?"表示任意一個字元

5、 find  /home/work/  -size +20M

      查詢大於20M的檔案,-20M表示小於20M

6、find  /home/work  -atime  -5

      查詢5天內訪問過的檔案, +5 表示5天內沒有訪問過的檔案。

      擴充套件:用stat命令可以獲得相關的時間戳。atime表示最近一次訪問的時間,mtime表示最近一次內容修改的時間,ctime表示最近一次屬性修改的時間,單位是天。amin,          mmin,cmin單位是分鐘。

7、find  /home/work  -atime  -5  -a  -size -1M

      查詢5天訪問過的並且大小小於1M的檔案。

     -a    與連線 ,   -o  或連線, -not  條件取反  


二、grep

        用來匹配特定的文字行,全稱是Global Regular Expression Print。

        基本格式:  grep  [OPTIONS]   PATTERN    [FILE...]

1、grep  "hello"  ./*

       遍歷當前目錄下的所有檔案,把含有"hello"的文字行的打印出來。

       grep   -r  "hello"  ./*  會遍歷子目錄。

2、其他引數控制

      -i    匹配時,忽略大小寫

      -n   顯示行號

      -c   只顯示匹配到的文字行總數

       -l   只顯示匹配到文字行的檔名

       -v  顯示沒有匹配到的文字行,相當於取反操作。


三、wc

        文字統計工具,全城word count。使用方法很簡單。能將檔案的行數、字數、位元組數打印出來。

1、wc  -l   test.txt

       統計test.txt中文字的行數。

2、wc  -c  test.txt

       統計位元組數    

3、wc  -w  test.txt

      統計字數,我所理解的字就是一個單詞,單詞都是又空格、tab鍵、換行符來分割的。

4、wc  -m  test.txt

       統計字元數。這和位元組數是有區別的,因為一箇中文字元會佔3個位元組。


四、例項操作

1、統計/home/work/目錄下所有以.txt結尾的檔案個數(不包括目錄)

       find  /home/work/   -type f   -name  "*.txt"  | wc -l


2、刪除/home/work/目錄下所有以.txt結尾的檔案

      find  /home/work/   -type f   -name  "*.txt"  -exec  rm  -f  {} \;

      -exec 後面跟著執行動作,就是一個操作命令,即每查詢到一個檔案就執行rm -f 動作,{}就代表查詢到的檔案,\; 表示命令的結束。

     注意,{}和\之間有空格。

     也可以這樣做:

     find  /home/work/   -type f   -name  "*.txt"  |  xargs  rm  -f 


3、統計/home/work/當前目錄下有多少普通檔案(即不遍歷子目錄)

      ls /home/work  -l  |  grep '^-' |wc -l

      -l 引數顯示出檔案的屬性,開頭為‘-’表示普通檔案,從而排除目錄,'^-'表示匹配開頭為‘-’的字串。


以上僅為簡單總結,之後再繼續補充。