一道shell面试题,有兴趣的来看看
时间:2011-03-19
来源:互联网
目录下有如下.exe文件
11111111111 3334444.exe dgfggg eee2333.exe err8244 4848484hh.exe fe7374j edddff24cd.exe r7r8724 4747434.exe
要求:
将.exe文件改名为md5值+.sample的形式
同时计算 md5值的最后2位(进行16进制转10进制运算)如果能被5整除,就删除该文件
用shell实现
作者: chinaboywg 发布时间: 2011-03-19
谁给个全的代码
作者: chinaboywg 发布时间: 2011-03-19
作者: chinaboywg 发布时间: 2011-03-19
- ls *.exe |while read line
- do
- md5=`echo -n ${line%.exe} |md5sum|cut -d' ' -f1`
- test=`echo ${md5:0-2}%5|bc`
- if [ $test -eq 0 ]
- then
- rm "$line"
- else
- mv "$line" $md5.sample
- fi
- done
作者: yinyuemi 发布时间: 2011-03-19
- #!/bin/bash
- IFS=///
- for file in *.exe
- do S=$(echo $file|md5sum|awk '{T=strtonum("0x"substr($1,length($1)-1));print T/5==0?0:1}')
- [[ S==1 ]] && rm -rf $file||mv $file $(echo $file|md5sum|awk '{print $1}').sample
- done
作者: 网中淫 发布时间: 2011-03-19
SUSE下:
ls *.exe |while read line
> do
> md5=`echo -n ${line%.exe} |md5sum|cut -d' ' -f1`
> test=`echo ${md5:0-2}%5|bc`
> if [ $test -eq 0 ]
> then
> rm "$line"
> else
> mv "$line" $md5.sample
> fi
> done
/bin/ls: *.exe: No such file or directory
suse:~/test #
REDHAT下:
[root@server1 test]# ls *.exe |while read line; do md5=`echo -n ${line%.exe} |md5sum|cut -d' ' -f1`; test=`echo ${md5:0-2}%5|bc`; if [ $test -eq 0 ]; then rm "$line"; else mv "$line" $md5.sample; fi; done
rm: remove regular empty file `11111111111 3334444.exe'? [root@server1 test]#
最好能测试下再发
作者: chinaboywg 发布时间: 2011-03-19
作者: 惟吾无为 发布时间: 2011-03-19
网中淫 发表于 2011-03-19 13:12
不行 最好测试下再发
作者: chinaboywg 发布时间: 2011-03-19
SUSE下:
ls *.exe |while read line
> do
> md5=`echo -n ${line%.exe} |md5s ...
chinaboywg 发表于 2011-03-19 13:31
我测试了才发的,我用的服务器运行没问题
x86_64-redhat-linux-gnu
作者: yinyuemi 发布时间: 2011-03-19
ls *.exe >filelist
i=1
tmp=`cat filelist |wc -l`
while [ $i -ne $tmp ]
do
files=`cat filelist |sed -n "{${i},${i}p}"`
#echo $files
md5value=`echo -n "$files" |md5sum|cut -d' ' -f1`
mv "$files" ${md5value}.sample
md52=`echo $md5value |cut -c 31-32`
#echo $md52
md516=`echo "$md52"|awk '{print strtonum($0)}'`
#echo $md516
m=$md516
[ $((m%5)) = 0 ] && echo $m $md5value
i=`expr $i + 1`
done
作者: chinaboywg 发布时间: 2011-03-19
你的代码是什么 贴出来看看
作者: db2-zhang 发布时间: 2011-03-19
ls *.exe |while read line
do
md5=`echo -n ${line%.exe} |md5sum|cut -d' ' -f1`
mv "$line" $md5.sample
test=`echo ${md5:0-2}%5|bc`
if [ $test -eq 0 ]
then
rm $md5.sample
fi
done
作者: chinaboywg 发布时间: 2011-03-19
你的这段代码好使吗?
作者: db2-zhang 发布时间: 2011-03-19
我只想知道,
1, 你那MD5值是exe文件的, 还是文件名的
2, ls: no such file, 你的测试目录下有没有exe文件
作者: 惟吾无为 发布时间: 2011-03-19
恩 可以运行
1 就是计算一个.exe 文件的md5值 把字符串取出来
2 刚才疏忽了
作者: chinaboywg 发布时间: 2011-03-19
现在测试MD5值
md5=`echo -n ${line%.exe} |md5sum|cut -d' ' -f1`
有没有把这个值同你
md5sum file
获得的值比较
作者: 惟吾无为 发布时间: 2011-03-19
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28