Linux学习---find命令使用技巧


1、查找文件
Linux中查找文件的命令为“find”命令,syntax:
find [起始目录] 寻找条件 操作如,从根目录下开始查找abc.cpp文件
 find / -name abc.cpp
在当前目录下所有.cpp文件
 find . -name "*.cpp"
find命令,配合-exec参数,可以对查询的文件进行进一步的操作
-exec 参数后面跟的是command命令,它的终止是以;为结束标志的,所以这句命令后面的分号是不可缺少的,考虑到各个系统中分号会有不同的意义,所以前面加使用转义符反斜杠 '\'。
 xargs展开find获得的结果,使其作为grep的参数
find ./ -name "*.tmp" -exec rm -rf "{}" /;
删除所有的临时文件
但是rm mv等命令对大量文件操作是报错 -bash: /bin/rm: Argument list too long
 可用xargs 解决
 删除当前目录下所有.cpp文件
 find . -name "*.tmp" | xargs rm
find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去。
find与grep配合使用,用来查找指定目录下的文件内容。grep用于查找文件中的字符串,或能匹配正则表达式的行
grep命令
grep (global search regular expression_r(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
grep正则表达式元字符集(基本集)
^ 锚定行的开始 如:'^grep'匹配所有以grep开头的行。
$ 锚定行的结束 如:'grep$'匹配所有以grep结尾的行。
. 匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。
* 匹配零个或多个先前字符 如:'*grep'匹配所有一个或多个空格后紧跟grep的行。 .*一起用代表任意字符。
[] 匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。
[^] 匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。
\(..\) 标记匹配字符,如:'\(love\)',love被标记为1。
\< 锚定单词的开始,如:'\
\> 锚定单词的结束,如'grep\>'匹配包含以grep结尾的单词的行。
x\{m\} 连续重复字符x,m次,如:'o\{5\}'匹配包含连续5个o的行。
x\{m,\} 连续重复字符x,至少m次,如:'o\{5,\}'匹配至少连续有5个o的行。
x\{m,n\} 连续重复字符x,至少m次,不多于n次,如:'o\{5,10\}'匹配连续5--10个o的行。
\w 匹配一个文字和数字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零个或多个文字或数字字符,然后是p。
\W w的反置形式,匹配一个非单词字符,如点号句号等。\W*则可匹配多个。
\b 单词锁定符,如: '\bgrep\b'只匹配grep,即只能是grep这个单词,两边均为空格。
find、grep、xargs经常配合使用,如下:
find -name “.cpp” |xargs grep 'test' 查找当前目录下所有的cpp文件中包含test的行。作者:

相关内容