说明:水平有限仅供参考
查找当前目录下文件大小大于100k的文件,并且修改日期为3天内的文件,并将其移动到/tmp
方法一:find forforiin`find.-typef-size+100c`;domv$i/tmp;done
方法二:find exec,find xargsfind.-typef-size+100c-execmv{}/tmp/\;
find.-typef-size+100c-mtime+3|xargs-I'{}'mv{}/tmp/a
方法三:find awkfind.-typef-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-*-
importsys
defprintstart(n):#打印指定个*符号
foriinxrange(n):
sys.stdout.write("*")
defmain():
alist=sys.argv[1:]#将参数放入alist
foriinxrange(len(alist)):#str转换为int
alist[i]=int(alist[i])
foriinxrange(len(alist)):
printstart(alist[i])
if__name__=="__main__":
main()
知识点:
sys.agrv 是一个list,保存程序名和所有参数的值
shell实现root@vmUbu:/home/dell/shell#catshift.sh
#/bin/bash
while[$#-ne0]
do
foriin`seq$1`
do
echo-n"*"
done
echo
shift
done
测试root@vmUbu:/home/dell/shell#./shift.sh123424
*
**
***
****
**
****
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实现优点麻烦,仅当练习之目的。importsys
ip_dict={}
filename="access.log"
withopen(filename,"rb")asrf:
forlineinrf.readlines():
ip=str(line.strip("\n").split("")[0])
ifipnotinip_dict:
ip_dict[ip]=1
else:
ip_dict[ip]+=1
#按值排序
sortedDict=sorted(ip_dict.iteritems(),key=lambdaip_dict:ip_dict[1],reverse=True)
forkey,valueinsortedDict:
printkey,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-*-
importsys
importrandom
defmain():
seed="!@#$%&_1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
seedupper="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
seedlower="abcdefghijklmnopqrstuvwxyz"
seednum="1234567890"
upper=random.choice(seedupper)
lower=random.choice(seedlower)
num=random.choice(seednum)
n=8
passwdtmp=""
foriinxrange(n-3):
passwdtmp+=random.choice(seed)
passwd=upper+lower+num+passwdtmp
printpasswd
if__name__=="__main__":
main()
shell实现root@vmUbu:/home/dell/shell#vimrandompasswd.sh
echo$n
#/bin/bash
read-p"inputanumber:"n
if[$n-le6]
then
echo"Error,inputanumbergreatthan6."
exit
fi
upper=`tr-dc"A-Z"
lower=`tr-dc"a-z"
num=`tr-dc"0-9"
passwd=$upper$lower$num
letn=$n-3
foriin`seq$n`
do
char=`tr-dc"[A-Z,a-z,0-9,!@#$%^&]"
passwd=$passwd$char
done
echo$passwd
测试root@vmUbu:/home/dell/shell#./randompasswd.sh
inputanumber:8
Jy9kRBHC
root@vmUbu:/home/dell/shell#./randompasswd.sh
inputanumber:9
Nj7lh0Ph#
root@vmUbu:/home/dell/shell#./randompasswd.sh
inputanumber:10
He8I&eWzXu
root@vmUbu:/home/dell/shell#./randompasswd.sh
inputanumber:5
Error,inputanumbergreatthan6.
root@vmUbu:/home/dell/shell#