grep和find、tar

re正则

• ^ 锚定⾏的开始 如: '^grep'匹配所有以grep开头的行。
• $ 锚定⾏的结束 如: 'grep$'匹配所有以grep结尾的行。
• 匹配⼀个⾮换⾏符的字符 如: 'gr.p'匹配gr后接⼀个任意字符,然后是p。
• * 匹配零个或多个先前字符 如: ' *grep'匹配所有⼀个或多个空格后紧跟grep的行。 .*⼀一起⽤代表任意字符。
• [] 匹配⼀个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。
• [^] 匹配⼀个不在指定范围内的字符,如: ’[^A-FH-Z]rep'匹配不包含A-F和H-Z的⼀个字⺟开头,紧跟rep的⾏。

grep的选项

• -b 在每⼀⾏前⾯加上其所在的块号,根据上下⽂定位磁盘块时可能会⽤到
• -c 显示匹配到行的数⽬,⽽不是显示行的内容
• -h 不显示⽂件名
• -i ⽐较字符时忽略略⼤小写的区别
• -l(⼩写的字⺟L) 只列出匹配⾏所在文件的文件名(每个文件名只列⼀次),⽂件名之间用换⾏符分隔
• -n 在每一⾏前⾯加上它在文件中的相对行号
• -r 对目录下递归查询所有子目录
• -v 反向查找,只显示不匹配的行
• -w 把表达式作为词来查找,就好像它被\<和\>夹着那样。只适⽤用于grep(并⾮所有版本的grep都⽀持这⼀功能,譬如, SCO UNIX就不支持)

grep用法举例

• grep 'test' d* 显示所有以d开头的文件中包含test的⾏。
• grep 'test' aa bb cc 显示在aa, bb, cc⽂件中匹配test的⾏。
• sudo grep -v '#' /etc/host.conf 显示在host.conf中没有‘#’的行
• ls -l | grep '^a' 通过管道过滤ls -l输出的内容,只显示以a开头的行。

find

• find path -option [ -print ] [ -exec -ok command ] {} \; //find的参数
• $find ~ -name "*.txt" -print #在$HOME中查.txt⽂件并显示
• $find . -name "*.txt" -print  以.txt结尾的文件并且显示
• $find . -name "[A-Z]*" -print #查以⼤写字母开头的文件
• $find /etc -name "host*" -print #查以host开头的文件
• $find . -name "[a-z][a-z][0–9][0–9].txt" -print #查以两个小写字母和两个数字开头的txt⽂件
• $find . -perm 755 -print 查以权限为755的文件并且显示出来
• $find . -perm -007 -exec ls -l {} \; #查所有用户都可读写执行的⽂件同-perm 777
• $find . -type d -print 
• $find . ! -type d -print
• $find . -type l -print
• $find . -size +1000000c -print #查长度大于1Mb的文件
• $find . -size 100c -print # 查长度为100c的文件
• $find . -size +10 -print #查长度超过10块的文件(1块=512字节)

tar命令参数

• tar [-cxtzjvfpPN] ⽂件 目录/文件
• -c :建立一个压缩文件的参数指令(create 的意思);
• -x :解开一个压缩文件的参数指令!
• -t :查看 tarfile 里面的文件!
• -z :是否同时具有 gzip 的属性亦即是否需要⽤ gzip 压缩
• -v :压缩的过程中显示⽂件
• -f :使⽤档名
• -N :后⾯接的⽇期(yyyy/mm/dd)
• --exclude FILE:在压缩的过程中,不要将 FILE 打包

tar命令

tar -cvf 压缩后的文件 要压缩的文件

grep 'best' find *.conf 查找所有*.conf中包含best的行
posted @ 2020-12-15 19:41  剑客猫  阅读(220)  评论(0编辑  收藏  举报