本文是自己学习的总结,仅以作分享。若有不对的地方欢迎指正。
find:根据条件来搜索和查找文件或目录
-name:查找文件
-perm:匹配权限(mode为全匹配,-mode为包含即可)
-user:匹配文件属主-group:匹配属组
-mtime -n +n:匹配文件更改时间的文件,-n指n天以内,+n指n天以前
-atime -n +n:匹配文件访问时间的文件,-n指n天以内,+n指n天以前
-ctime n +n:匹配文件修改权限时间的文件,-n指n天以内,+n指n天以前
-nogroup:匹配无有效属组的文件,即文件的属组在/etc/groups中不存在
-nouser:匹配无有效属组的文件,即文件的属主在/etc/passwd中不存
-type b/d/c/p/l/f:匹配文件类型,字母依次表示块设备、目录、字符设备、管道、符号链接、普通文件
-size:匹配文件大小
-prune:忽略某个目录
根据文件名称查找
find passwd:只在当前目录下查找passwd文件(不包括子目录)
find -name passwd:在当前目录下查找passwd文件
find ~ -iname passwd:在家目录下忽略大小写查找passwd文件
find ~ -type d -name shell:在家目录下查找名称为shell的目录
根据权限查找
find ~ -type f -perm 777:在家目录下查找文件权限为777的文件
find ~ -perm /u=x:在家目录下查找可执行的文件
find ~ -type f -empty:在家目录下查找空文件
find ~ -type f -name ".*":在家目录下查找隐藏文件
find ~ -type f -name "*.7z" -exec rm -f {} \;:在家目录下查找所有以.7z结尾的文件并删除
根据属组与属主查找
find ~ -user ramble:在家目录下查找属主为ramble的文件
find ~ -group ramble:在家目录下查找属组为ramble的文件
find ~ -user ramble -name "*0*":在家目录下查找属主为ramble且文件名中有数字0的文件
根据文件大小查找
find ~ -size 2M:在家目录下查找文件大小为2M的文件
find ~ -size +1M -size -3M:在家目录下查找文件大小在1M到3M之间的文件
grep:强大的列处理文件,查找文件里符合条件的字符串。不指定任何文件名称,或是所给予的文件名为"-",则grep指令会从标准输入设备读取数据
-a: 不要忽略二进制的数据
-A <显示行数>:显示符合范本样式的行及该行之后的内容
-b: 在显示符合样式的那一行之前,标示出该行第一个字符的编号
-B <显示行数>: 显示符合范本样式的行及该行之前的内容
-c: 计算符合样式的行数
-C <显示行数>: 显示符合范本样式的行及该行前后的内容
-d <动作>: 指定要查找的是目录时使用该参数,否则将报错
-e <范本样式>: 指定字符串做为查找文件内容的样式
-E: 将样式为延伸的普通表示法来使用
-f <规则文件>: 指定规则文件,查找符合规则条件的文件内容,格式为每行一个规则样式
-F: 将样式视为固定字符串的列表
-G: 将样式视为普通的表示法来使用
-h: 在显示符合样式的那一行之前,不标示该行所属的文件名称
-H: 在显示符合样式的那一行之前,标示该行所属的文件名称
-i: 忽略字符大小写的差别
-y: 忽略字符大小写的差别
-l: 列出文件内容符合指定的样式的文件名称
-L: 列出文件内容不符合指定的样式的文件名称
-n: 在显示符合样式的那一行之前,标示出该行的列数编号
-o: 只显示匹配PATTERN 部分
-q: 不显示任何信息
-s: 不显示错误信息
-v: 显示不包含匹配文本的所有行
-w: 只显示全字符合的列
-x: 只显示全列符合的列
grep "root" passwd:显示passwd中有root字符串的行
grep "root" passwd -o:只显示passwd中匹配到的root字符串
grep "root" passwd -c:显示passwd中有root字符串的行数
grep "root" passwd -i:忽略大小写显示passwd中有root字符串的行
grep "root" passwd -n:显示passwd中有root字符串的行且在行首标明行号
grep "^root" passwd -n:显示passwd中以root字符串开头的行且在行首标明行号
grep "root" * -n:在当前目录下搜索文件中有root字符串的文件且标明在文件名及行号
grep "root" *.txt -l:在当前目录下搜索满足文件中有root字符串的文件且文件名以.txt结尾的文件
grep "root" * --exclude=*.txt:在当前目录下搜索文件中有root字符串的且文件名不以.txt结尾的文件
grep "root" * --exclude-from test-02.txt:在当前目录下搜索文件中有root字符串文件且文件名不在test-02.txt中记录
grep "root" * -r --include=*.{txt,sh} -n:在当前目录下递归搜索以.txt或.sh结尾的文件中有root字符串的文件并显示文件名、行号等