linux find grep組合使用


轉自http://blog.csdn.net/cupidove/article/details/8767450

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/*'


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM