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 引數顯示出檔案的屬性,開頭為‘-’表示普通檔案,從而排除目錄,'^-'表示匹配開頭為‘-’的字串。
以上僅為簡單總結,之後再繼續補充。