grep
grep -rn "hello,world!" * #递归查找当前目录下所有包含hello,world的文件
grep -C number pattern files :#匹配的上下文分别显示[number]行,
-r 是递归查找
-n 是显示行号
-R 查找所有文件包含子目录
-i 忽略大小写
-c --count #计算符合样式的列数。
grep -i pattern files :#不区分大小写地搜索。默认情况区分大小写,
grep -l pattern files :#只列出匹配的文件名,
grep -L pattern files :#列出不匹配的文件名,
grep -w pattern files :#只匹配整个单词,而不是字符串的一部分(如匹配‘magic’,而不是‘magical’),
grep pattern1 | pattern2 files :#显示匹配 pattern1 或 pattern2 的行,
grep pattern1 files | grep pattern2 :#显示既匹配 pattern1 又匹配 pattern2 的行。
< 和 > 分别标注单词的开始与结尾。
例如:
grep man * #会匹配 ‘Batman’、‘manic’、‘man’等,
grep '<man' * #匹配‘manic’和‘man’,但不是‘Batman’,
grep '<man>' #只匹配‘man’,而不是‘Batman’或‘manic’等其他的字符串。
'^':#指匹配的字符串在行首,
'$':#指匹配的字符串在行尾,
find
-name:#按照文件名称查找
-perm:#按照文件权限查找
-mtime -n +n:#按照文件更改时间查找。-n 指距离现在时间n天以内;+n n天以外
-mmin -n +n : #按照文件更改时间查找。-n 指距离现在时间n分钟以内;+n n分钟以外
-size n[c] #查长度为n块[或n字节]的文件
find / -size +5000000c #要查找所有大于 5MB 的用户文件
-type b/d/c/p/l/f #查是块设备、目录、字符设备、管道、符号链接、普通文件
-print :#将匹配的文件输出到标准输出
-depth #使查找在进入子目录前先行查找完本目录
-maxdepth #至多在目录树n个级别的目录内查找
-mindepth #至少在目录树n个级别的目录中查找
find /home -size +512k #查大于512k的文件
find /home -size -512k 查小于512k的文件
find /home -perm 0700 #查权限为700的文件或目录
find /home -uid +501 #列出/home目录内用户的识别码大于501的文件或目录
find /home -newer tmp.txt #在/home下查更新时间比tmp.txt近的文件或目录
find . -mmin -10 -mmin +5
$ find <指定目录> <指定条件> <指定动作>
$ find . -name 'my*'
#搜索当前目录(含子目录,以下同)中,所有文件名以my开头的文件。
$ find . -name 'my*' -ls
#搜索当前目录中,所有文件名以my开头的文件,并显示它们的详细信息。
$ find . -type f -mmin -10
#搜索当前目录中,所有过去10分钟中更新过的普通文件。如果不加-type f参数,则搜索普通文件+特殊文件+目录。
find . -name *.gif -exec ls {} ;
-exec 参数中包含了真正有价值的操作。当查找到匹配搜索条件的文件时,-exec 参数定义了将对这些文件进行什么操作
-ok是 -exec 参数的一个重要的替代项,它的行为和 -exec一样,但它会提示您是否要对文件运行相应的命令。
find $HOME/. -name *.txt -ok rm {} ;
它列出了查找到的每个文件,并且系统将暂停以等待您输入Y或者 y或者n. 如果您按下 Enter 键,系统将不会删除该文件
find . ( -name a.out -o -name '*.o' -o -name 'core' ) -exec rm {} ;
括号中的文件掩码 标识出了需要删除的文件类型,每个文件掩码的前面都有 -name.该列表可以扩展为包括您需要清除的系统中的任何临时文件类型。
find $HOME/. -name *.txt -exec head -n 1 -v {} ; > report.txt
less < report.txt
有些人使用每个文本文件的第一行作为标题或者文件内容的描述。可以使用列出文件名和所有文本文件第一行内容的报表更方便地对大量的文本文件进行筛选。
find . -empty -exec ls {} ;
列出长度为零的文件