1. 程式人生 > >linux中 find grep組合使用示例

linux中 find grep組合使用示例

使用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' *