linux find grep組合使用

2021-07-05 01:52:42 字數 3149 閱讀 3984

1. 查詢所有".h"檔案

find /path -name "*.h"

2. 查詢所有".h"檔案中的含有"helloworld"字串的檔案

find /path -name "*.h" -exec grep -in "helloworld" {} \;

find /path -name "*.h" | xargs grep -in "helloworld"

3. 查詢所有".h"和".c"檔案中的含有"helloworld"字串的檔案

find /path /( -name "*.h" -or -name "*.c" /) -exec grep -in "helloworld" {} \;

4. 查詢非備份檔案中的含有"helloworld"字串的檔案

find /path /( -not -name "*~" /) -exec grep -in "helloworld" {} \;

注:/path為查詢路徑,預設為當前路徑。帶-exec引數時必須以\;結尾,否則會提示「find: 遺漏「-exec」的引數」。

使用find和xargs

1. find pathname -options [-print -exec -ok]

-optinos

1)-name:按照檔名查詢

find ~ -name 「*.txt」 -print

find ~ -name 「[a-z][0-9].txt」 -print

2)-perm:按照許可權查詢檔案

find ~ -perm 755 -print 查詢許可權為755的檔案

find ~ -perm 007 -print 查詢o位置上具有7許可權的檔案

find ~ -perm 4000 -print 查詢具有suid的檔案

3)-prune

不在當前目錄下查詢

4)-user和-nouser

find ~ -user zhao -print 查詢檔案屬主是zhao的檔案

find ~ -nouser -print 查詢檔案屬主已經被刪除的檔案

5)-group和-nogroup

find ~ -group zhao -print 查詢檔案群組是zhao的檔案

6)按照時間

find ~ -mtime -5 -print 檔案更改時間在5天內的檔案

find ~ -mtime +3 -print 檔案更改時間在3天前的檔案

find ~ -newer file1 -print 查詢比檔案file1新的檔案

7)按照型別查詢

find ~ -type d -print 查詢所有目錄

8)按照大小

find ~ -size +1000000c -print 查詢檔案大小大於1000000位元組(1m)的檔案

9)查詢位於本檔案系統裡面的檔案

find / -name 「*.txt」 -mount -print

-exec,-ok:find命令對於匹配檔案執行該引數所給出shell命令,相應命令形式為: 『command』 {} \;

-ok 在執行命令前要確認

find ~ -type f -exec ls -l {} \;

find / -name 「*.log」 -mtime +5 -ok rm {} \;

find . -name core -exec rm {} \;

使用-x dev引數

防止find搜尋其他分割槽

find . -size 0 -exec rm {} \;

刪除尺寸為0的檔案

2. xargs與-exec功能類似

find ~ -type f | xargs ls -l

find / -name 「*.log」 -type f -print| xargs grep -i db0

find . -type f |xargs grep -i 「mary」

在所有檔案中檢索字串mary

ls *~ |xargs rm -rf

刪除所有以~結尾的檔案

svn過濾svn資料夾

1.使用管道進行雙層「過濾」,其中第二次grep使用了-v選項,即逆向匹配,列印出不匹配的行

grep -r 'function_name' * | grep -v '.svn'

2.或者更簡單一些,直接使用--exclude-dir選項,即指定排除目錄,注意svn前的\.

grep -r --exclude-dir=\.svn 'function_name' *

grep多個過濾條件

1、或操作

grep -e '123|abc' filename 

// 找出檔案(filename)中包含123或者包含abc的行

egrep '123|abc' filename 

// 用egrep同樣可以實現

awk '/123|abc/' filename 

// awk 的實現方式

2、與操作

grep pattern1 files | grep pattern2 :顯示既匹配 pattern1 又匹配 pattern2 的行。

3、其他操作

grep -i pattern files :不區分大小寫地搜尋。預設情況區分大小寫,

grep -l pattern files :只列出匹配的檔名,

grep -l pattern files :列出不匹配的檔名,

grep -w pattern files :只匹配整個單詞,而不是字串的一部分(如匹配『magic』,而不是『magical』),

grep -c number pattern files :匹配的上下文分別顯示[number]行,

find過濾svn資料夾

find -type f ! -path '*/.svn/*'

linux find grep組合使用

顯示檔名 find name jsp exec grep with filename in 人保 1.查詢所有 h 檔案 find path name h 2.查詢所有 h 檔案中的含有 helloworld 字串的檔案 find path name h exec grep in helloworl...

Linux find grep 正則 通配

grep find在指定目錄下查詢檔案。匹配檔名 amin 查詢 在指定時被 訪問過的檔案或目錄 分鐘 cmin,mmin atime 查詢在指定時間訪問過的檔案或目錄 天 ctime,mtime expty 尋找檔案大小為0 byte的檔案,或目錄下沒有任何子目錄或檔案的空目錄 name 按照檔名...

組合關係與組合模式

物件a包含物件b,物件b離開物件a沒有實際意義。是一種更強的關聯關係。人包含手,手離開人的軀體就失去了它應有的作用。場景 window窗體由滑動條slider 頭部header 和工作區panel組合而成。將物件組合成樹形結構以表示 部分 整體 的層次結構。組合模式使得使用者對單個物件和組合物件的使...