majianyu
11/1/2017 - 9:47 AM

linux

# 查找修改时间90天以上的的文件并执行删除
find /home/data/log/ -mtime +90 -name "*.log" -exec rm -Rf {} \;

# 删除较老的文件
ls -lt | awk '{if(NR>5){print "rm "$9}}' | sh

find /home/www.bk.d/ -maxdepth 1 -mtime +7 -type d  -exec rm -rf {} \;


find . -name "*.go" | xargs wc -l | awk '{sum+=$1}END{print sum}'
rsync -a --progress dir1 dir2 ip:~/
# 删除指定目录30天前的文件
find dir -mtime +30 -name "文件名" -exec rm -rf {} \;
# -i=inplace s 替换 #或/分隔符 g全局 
sed "s#\t#,#g" filename
 
# 删除第 n 行
sed "nd" filename

# 查看第 n 行
sed -n 100p filename
# 使用 sudo 权限执行多条语句
sudo su -c "command a; command b"

# 切换为 root 用户
sudo -iH
# 使用 root 用户重新登陆
sudo su -
# nohup
nohup command 2>&1 &

# 根据名称获得进程id
id=$(pgrep name)
kill ${id}
# 拆分
awk -F '?|\t' '{print $6}' filename

# 查看指定行
awk 'NR==100' filename

# 根据指定条件查看
awk -F '&|=' '$32==1 && $30<=15' filename | wc -l

# 计算 N+
awk '{one+=1;if($1>1){two+=1}if($1>2){three+=1}if($1>3){four+=1}if($1>4){five+=1}if($1>5){six+=1}if($1>6){seven+=1}if($1>7){eight+=1}if($1>8){nine+=1}if($1>9){ten+=1}}END{print one,two,three,four,five,six,seven,eight,nine,ten}'

# 指定输出分隔符
awk -F ',' -v OFS="," '{print$1,$2,$3}' 201710_old > 201710

# 计算指定 key 的求和,平均数
awk -F ',' '{if($1=="a"){sum+=$2;num+=1}}END{print "sum=",sum,"num=",num,"avg=",sum/num}' test

# 最大值
awk -F ',' 'BEGIN {max = 0} {if ($2>max) max=$2} END {print "Max=", max}' test

# 最小值
awk -F ',' 'BEGIN {min = 99999999} {if ($2<min) min=$2} END {print "Min=", min}' test