2017拼多多校园招聘-系统运维工程师
说明:水平有限仅供参考
查找当前目录下文件大小大于100k的文件,并且修改日期为3天内的文件,并将其移动到/tmp
方法一:find for
for i in `find . -type f -size +100c`;do mv $i /tmp;done
方法二:find exec,find xargs
find . -type f -size +100c -exec mv {} /tmp/ \;find . -type f -size +100c -mtime +3 |xargs -I '{}' mv {} /tmp/a 方法三:find awk
find . -type f -size +100c -mtime +3 |xargs -I '{}' ls {} | awk '{print "mv " $0 " /tmp/" }' |bash 知识点:
find中-exec与xargs的使用
-size +表示大于,单位c表示k,m表示M
mtime +表示多少天前,-表示多少天内
2.打印*的图形,说明:执行./function 1 2 3 4 2 4,打印参数对应数字个*符号,例如
*
**
***
****
**
****
答:
python实现
# -*- coding:utf-8 -*-import sysdef printstart(n): #打印指定个*符号for i in xrange(n):sys.stdout.write("*")def main():alist = sys.argv[1:] #将参数放入alistfor i in xrange(len(alist)): #str转换为intalist[i] = int(alist[i])for i in xrange(len(alist)):printstart(alist[i])printif __name__ == "__main__":main() 知识点:
sys.agrv 是一个list,保存程序名和所有参数的值
shell实现
root@vmUbu:/home/dell/shell# cat shift.sh #/bin/bashwhile [ $# -ne 0 ] dofor i in `seq $1`doecho -n "*"doneechoshift done
测试
root@vmUbu:/home/dell/shell# ./shift.sh 1 2 3 4 2 4 * ** *** **** ** **** root@vmUbu:/home/dell/shell#
知识点
$1 第一个参数的值
$# 参数的个数
$@ 所有参数
shift 向前移动一个参数
3.打印access.log 排名前10的ip,和对应的user agent数
答:
shell实现
#awk '{print $1}' access.log |sort |uniq -c|sort -rnk 1 |head -n 10
#cat access.log |awk '{a[$1]++}END{for(i in a) print i,a[i]}' |sort -rnk 2 |head -n 10
疑问:对应user agent统计呢?
python实现
说明python实现优点麻烦,仅当练习之目的。
import sysip_dict={}filename = "access.log"
with open(filename, "rb") as rf:for line in rf.readlines():ip = str(line.strip("\n").split(" ")[0])if ip not in ip_dict:ip_dict[ip] = 1else:ip_dict[ip] += 1
#按值排序
sortedDict = sorted(ip_dict.iteritems(),key=lambda ip_dict:ip_dict[1],reverse=True)
for key,value in sortedDict:print key, value 测试
C:\Python27\python.exe C:/Users/Administrator/PycharmProjects/HuaweiExcercise/mytest.py
10.9.40.134 16
10.9.40.135 6
10.9.40.131 2
Process finished with exit code 0
4.输出随机密码,密码长度必须大于6,必须包括至少一个大写,至少一个小写,至少一个数字
python实现
# -*- coding:utf-8 -*-import sys
import randomdef main():seed = "!@#$%&_1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"seedupper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"seedlower = "abcdefghijklmnopqrstuvwxyz"seednum = "1234567890"upper = random.choice(seedupper)lower = random.choice(seedlower)num = random.choice(seednum)n = 8passwdtmp = ""for i in xrange(n-3):passwdtmp += random.choice(seed)passwd = upper + lower +num + passwdtmpprint passwdif __name__ == "__main__":main() shell实现
root@vmUbu:/home/dell/shell# vim randompasswd.sh echo $n#/bin/bashread -p "input a number:" n if [ $n -le 6 ] thenecho "Error,input a number great than 6."exit fiupper=`tr -dc "A-Z" < /dev/urandom |head -c 1` lower=`tr -dc "a-z" < /dev/urandom |head -c 1` num=`tr -dc "0-9" < /dev/urandom |head -c 1`passwd=$upper$lower$numlet n=$n-3 for i in `seq $n` dochar=`tr -dc "[A-Z,a-z,0-9,!@#$%^&]" < /dev/urandom |head -c 1`passwd=$passwd$char done echo $passwd
测试
root@vmUbu:/home/dell/shell# ./randompasswd.sh input a number:8 Jy9kRBHC root@vmUbu:/home/dell/shell# ./randompasswd.sh input a number:9 Nj7lh0Ph# root@vmUbu:/home/dell/shell# ./randompasswd.sh input a number:10 He8I&eWzXu root@vmUbu:/home/dell/shell# ./randompasswd.sh input a number:5 Error,input a number great than 6. root@vmUbu:/home/dell/shell#
转载于:https://blog.51cto.com/237085/1962162
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
