常用案例分析:
find . -name
find . -name "*.pdf"
find ./ -name "[0-9]*"
find -type d -name "[0-9]*"
find -type f -name "[a-z]*"
find . -mtime -1
find . -mtime +1
find . -mtime -2 -print -exec cp {} ./root/test/ \;
find . \( -name "a*" -o -name "c*" -o -name "b*" \) -exec ls {} \;
find ./ -name "*.pdf" -exec tar -zcvf /tmp/test.tgz {} \;
find ./ -name "*.pdf" |xargs tar zcvf /tmp/mypdf.tgz
locate 功能较find简单,速度较快。但需要定期更新文件组织结构库更新数据库可使用命令updatedb.也可写在计划任务中做自动定期更新。
locate
locate -i
grep在指定文件中或标准输出中查找与所给关键字匹配的项,默认以行的形式输出。
常用案例分析:
ps -ef|grep net
more size.txt | grep '[a-z]'
more size.txt | grep '[bB]'
grep '^root' /etc/group
grep 'root$' /etc/group
more size.txt | grep -i 'b1'
more size.txt | grep -v 'b1'
grep '\$' /etc/init.d/nfs.server
grep -n ';$' filename
grep '^[A-Z].*?$' filename
grep -n '^' filename
grep -n '$' size.txt
awk的运行过程:
① awk从输入文件中读取一行,称为一条输入记录。(如果输入文件省略,将从标准输入读取)
② awk将读入的记录分割成字段,将第1个字段放入变量$1中,第2个字段放入$2,以此类推。$0表示整条记录。字段分隔符使用shell环境变量IFS或由参数指定。
③把当前输入记录依次与每一个awk_cmd中awk_pattern比较,看是否匹配,如果相匹配,就执行对应的actions。如果不匹配,就跳过对应的actions,直到比较完所有awk_cmd。
④ 当一条输入记录比较了所有的awk_cmd后,awk读取输入的下一行,继续重复步骤③和④,这个过程一直持续,直到awk读取到文件尾。
⑤ 当awk读完所有的输入行后,如果存在END,就执行相应的actions。
常用案例分析:
more size.txt | awk '/B/'
df -m |awk '$4 < 50'
awk '/0/ {print $1}' /etc/passwd
awk -F ":" '{print $1}' /etc/passwd
awk -F $sep '{print $1}' /etc/passwd
Sed是 个功能十分强大的编辑器,对文本文件流的处理主要以行为单位来进行。
常用案例分析:
sed -e '1,10d'
sed -e 's/yellow/black/g'
sed -n -e '1,10p' /etc/passwd
sed -n -e '1,10p' -e '1d' /etc/passwd
ps -ef |grep http |grep -v grep |awk -F " " '{print $2}' |sed -n -e '1,$p'
ps -ef |grep httpd |grep -v grep|awk -F " " '{print $2}'|xargs kill -9
while true; do cat /etc/passwd |grep 'bash$' |awk -F ":" '{print $1}' > /tmp/users && echo `cat /tmp/users` are the users who can login; sleep 2; clear; done
find /var/ -type f |xargs du -sk |awk -F " " '{print $0}' |awk '$1 > 1024'