Linus 中find和egrep的區別

這是兩個不同的命令,關於grep:
Linux系統中grep命令是一種強大的文本搜索工具,它能使用正則表達式搜索文本,並把匹 配的行打印出來。grep全稱是Global Regular Expression Print,表示全局正則表達式版本,它的使用權限是所有用戶。

而linux下的find
功能:在目錄結構中搜索文件,並執行指定的操作。此命令提供了相當多的查找條件,功能很強大。
語法:find 起始目錄 尋找條件 操作 
說明:find命令從指定的起始目錄開始,遞歸地搜索其各個子目錄,查找滿足尋找條件的文件並對之採取相關的操作。

所以簡單點說說grep是查找匹配條件的行,find是搜索匹配條件的文件。一個是搜索文件內容,一個是搜索文件本身。

 

場景1:服務器磁盤滿,一般由大的日誌文件導致,需找到大文件並刪除。

解決1find / -size +500M -print0|xargs -0 du -m|sort -nr

find指令爲找出500M以上的文件,print0和xargs -0配合使用,用來解決文件名中有空格或特殊字符問題。du -m是查看這些文件的大小,並以m爲單位顯示。最後sort -nr是按照數字反向排序(大的文件在前)

解決2:上述方法從根路徑查找,可能列出一些系統文件。可以在這個查找之前先進行一下過濾。

使用du -m -d 1 /|sort -nr  先看看根路徑下,哪個文件夾比較大,並且有嫌疑是導致磁盤滿的罪魁禍首。然後再基於那個目錄進行find。

----------------------------------------

場景2: 記得寫過一個xxx.c的文件,但是忘了放哪裏了

解決: find / -name *xxx*.c 模糊查找下這個文件

 

find -name april*                在當前目錄下查找以april開始的文件
find -name april* > a.txt        在當前目錄下查找以april開始的文件,並把結果輸出到a.txt中
find -name ap* -o -name may*     查找以ap或may開頭的文件
find /tmp -name wa* -type l      在/tmp下查找名爲wa開頭且類型爲符號鏈接的文件
find /home -mtime -2             在/home下查最近兩天內改動過的文件
find /home -atime -1             查/home下1天之內被存取過的文件
find /home -mmin +60             在/home下查60分鐘前改動過的文件
find /home -amin +30             在/home下查最近30分鐘前被存取過的文件
find /home -newer tmp.txt        在/home下查更新時間比tmp.txt近的文件或目錄
find /home -anewer tmp.txt       在/home下查存取時間比tmp.txt近的文件或目錄
find /home -used -2              列出/home中文件或目錄被改動過之後,在2日內被存取過的文件或目錄
find /home -user cnscn           列出/home目錄內屬於用戶cnscn的文件或目錄
find /home -uid +501             列出/home目錄內用戶的識別碼大於501的文件或目錄
find /home -group cnscn          列出/home內組爲cnscn的文件或目錄
find /home -gid 501              列出/home內組id爲501的文件或目錄
find /home -nouser               列出/home內不屬於本地用戶的文件或目錄
find /home -nogroup              列出/home內不屬於本地組的文件或目錄
find /home -maxdepth 4 -name tmp.txt   列出/home內的tmp.txt 查時深度最多爲3層
find /home -mindepth 3 -maxdepth 5 -name tmp.txt   在/home的第二層到第四層之間查tmp.txt
find /home -empty                查找/home中大小爲0的文件或空目錄
find /home -size +512k           查/home中大於512k的文件
find /home -size -512k           查/home中小於512k的文件
find /home -links +2             查/home中硬連接數大於2的文件或目錄
find /home -perm 0700            查/home中權限爲700的文件或目錄
find -type f -exec ls -l {} \;   查當前目錄下的所有普通文件,並在-exec選項中使用ls -l命令將它們列出
find -name a.txt -ok rm {} \;     查當前目錄下的a.txt並詢問是否刪除

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章