悲哀,写这个的时候快写完了去上课,下课回来关闭了软件啥都没了,心塞塞,简单再写一遍吧
命令行 man find 基本都在里面了
find [-H] [-L] [-P] [-D debugopts] [-Olevel] [starting-point...] [expression]
其实平常来讲,上面几个参数压根用不到,反正我没有用过
一般find命令可以简化为
find [path...] [expression]
expression:expression可以分为——“-options [-print -exec -ok …]”
如对当前目录下的所有普通文件执行file命令
find . -type f -exec file ‘{}’ \;
在普通文件里找出含有的include字符串
find . -type f -exec grep ‘include’ ‘{}’ \;
- -ok,和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
删除4天内产生的所有log文件,删除前确认
find . -name “*.log” -mtime -4 -ok rm {} \;
-perm: 按照文件权限来查找文件。
find . -perm 755 –print #在当前目录下查找文件权限位为755的文件
-prune: 不在当前指定的目录查找,使用-depth选项时被忽略
在使用find命令的-exec选项处理匹配到的文件时, find命令将所有匹配到的文件一起传递给exec执行。但有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出现溢出错误。错误信息通常是“参数列太长”或“参数列溢出”。这就是xargs命令的用处所在,特别是与find命令一起使用。
find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去。
一起使用的例子
查找系统中的每一个普通文件,然后使用xargs命令来测试它们分别属于哪类文件
find . -type f -print | xargs file
在整个系统中查找内存信息转储文件(core dump) ,然后把结果保存到/tmp/core.log 文件中:
find / -name “core” -print | xargs echo “” >/tmp/core.log
用grep命令在所有的普通文件中搜索hostname这个词
find . -type f -print | xargs grep “hostname”
删除3天以前的所有东西
find ./ -mtime +3 -print|xargs rm -f –r
find . -ctime +3 -exec rm -rf {} \;
删除文件大小为零的文件
find ./ -size 0 | xargs rm -f &
find命令配合使用exec和xargs可以使用户对所匹配到的文件执行几乎所有的命令。
grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
SYNOPSIS
grep [OPTIONS] PATTERN [FILE…]
grep [OPTIONS] [-e PATTERN]… [-f FILE]… [FILE…]
具体使用看man吧,这里给几个例子
显示所有以d开头的文件中包含test的行
grep ‘test’ d*
通过管道过滤ls -l输出的内容,只显示以a开头的行
ls -l | grep ‘^a’
grep -i pattern files :不区分大小写地搜索。默认情况区分大小写
grep -l pattern files :只列出匹配的文件名,
grep -L pattern files :列出不匹配的文件名,
grep -w pattern files :只匹配整个单词,而不是字符串的一部分(如匹配‘magic’,而不是‘magical’),
grep -C number pattern files :匹配的上下文分别显示[number]行,
grep pattern1 | pattern2 files :显示匹配 pattern1 或 pattern2 的行,
grep pattern1 files | grep pattern2 :显示既匹配 pattern1 又匹配 pattern2 的行。
grep命令常用参数和正则表达式:
-I :忽略大小写
-c :打印匹配的行数
-l :从多个文件中查找包含匹配项
-v :查找不包含匹配项的行
-n:打印包含匹配项的行和行标
RE(正则表达式)
\ 忽略正则表达式中特殊字符的原有含义
^ 匹配正则表达式的开始行
$ 匹配正则表达式的结束行
\< 从匹配正则表达式的行开始
> 到匹配正则表达式的行结束
[ ] 单个字符;如[A] 即A符合要求
[ - ] 范围 ;如[A-Z]即A,B,C一直到Z都符合要求
. 所有的单个字符
找出所有不是.c的文件
find . -type f |grep -v *.c
参考文献:
http://www.cnblogs.com/skynet/archive/2010/12/25/1916873.html