分页: 1 / 2
紧急求助 如何获得一个目录下所有.apk结尾的文件的大小。如果都小于某个值就返回0,有1个大于参考值就返回1
发表于 : 2012-10-15 12:30
由 hhht
在一个特定目录下,有多个.apk结尾的文件,现在有个参考值比如20M.
如果给目录下所有的.apk文件都小于参考值20M 则 exit 0,只要有一个文件大于参考值则返回1.
同时输出每个文件的大小。
Re: 紧急求助 如何获得一个目录下所有.apk结尾的文件的大小。如果都小于某个值就返回0,有1个大于参考值就返回1
发表于 : 2012-10-15 12:39
由 YeLee
用find啊,够简单了吧。
Re: 紧急求助 如何获得一个目录下所有.apk结尾的文件的大小。如果都小于某个值就返回0,有1个大于参考值就返回1
发表于 : 2012-10-15 12:45
由 hhht
YeLee 写了:用find啊,够简单了吧。
怎么用? find 只能检索出该路径下的所欲.apk文件吧? 我需要一个个的得出他们的大小,并且和一个参考值50M 比较大小。当路径下所有的包大小都小于参考值返回0, 只要有一个大于就返回1.
原来路径下只有一个包时,可以通过我写的脚本实现
#!/bin/sh
apkStadSize=51400
apkPath="../TestBaseDemo/bin/MainActivity-debug.apk"
chmod 777 ${apkPath}
apkSize=`du ${apkPath}| awk '{print $1}'`
if [ ${apkSize} -le ${apkStadSize} ] ; then
exit 0
else
exit 1
fi
现在路径下会有多个.apk包
Re: 紧急求助 如何获得一个目录下所有.apk结尾的文件的大小。如果都小于某个值就返回0,有1个大于参考值就返回1
发表于 : 2012-10-15 12:48
由 枫叶饭团
先把find的文档看完再说
Re: 紧急求助 如何获得一个目录下所有.apk结尾的文件的大小。如果都小于某个值就返回0,有1个大于参考值就返回1
发表于 : 2012-10-15 12:51
由 YeLee
find这不是有size么……

Re: 紧急求助 如何获得一个目录下所有.apk结尾的文件的大小。如果都小于某个值就返回0,有1个大于参考值就返回1
发表于 : 2012-10-15 13:01
由 hhht
YeLee 写了:find这不是有size么……

下午急着用,各位大虾能否先给个可用的脚本?
我今天用完再仔细研究。
谢谢
Re: 紧急求助 如何获得一个目录下所有.apk结尾的文件的大小。如果都小于某个值就返回0,有1个大于参考值就返回1
发表于 : 2012-10-15 14:10
由 YeLee
Re: 紧急求助 如何获得一个目录下所有.apk结尾的文件的大小。如果都小于某个值就返回0,有1个大于参考值就返回1
发表于 : 2012-10-15 14:17
由 hhht
find -iname "*.apk" -size 51400 和 find -iname "*.apk" -size 51400 //和参考值50M比较
cat 'find -iname "*.apk" -size 51400'都没反应
Re: 紧急求助 如何获得一个目录下所有.apk结尾的文件的大小。如果都小于某个值就返回0,有1个大于参考值就返回1
发表于 : 2012-10-15 14:19
由 YeLee
Re: 紧急求助 如何获得一个目录下所有.apk结尾的文件的大小。如果都小于某个值就返回0,有1个大于参考值就返回1
发表于 : 2012-10-16 10:28
由 hhht
谢谢,试了下效果如下:
xb@renren:~/shellLearning/a$ find -iname "*.apk" -size +10
./CpuMemoryTest.apk
./Main-debug-unaligned.apk
我最后改成自己写函数来处理了,不过还遗留一个问题,就是不能显示出每个大小超标apk文件的信息
代码: 全选
#!/bin/bash
# 脚本必须返回一个值才行,所以最后需要用exit返回值
checkApk() #判断单个apk的大小
{
apkStadSize=51400 #50M
apkName=$1
# chmod 777 ${apkPath}
apkSize=`du ${apkName} | awk '{print $1}'` #此句得到某个文件的大小信息
#echo "${apkSize}" #此处想显示每个大小超标文件的文件名和大小信息,但加了此句下面函数调用会出错 :(,
if [ ${apkSize} -le ${apkStadSize} ] ; then
echo 0
else
echo 1
fi
}
# apkPath="/Users/work/bvt-android/workspace/TestBaseDemo/bin"
apkPath="/home/xb/shellLearning/a"
chmod 777 ${apkPath}
value="1"
for a in `ls ${apkPath}/*.apk`
do
#checkApkSize.sh $a
#rec=`checkApk $a`
echo "${a}"
result=`checkApk ${a}`
if [ ${result} -eq ${value} ] ; then
#echo hahahah.$result
exit ${result}
#echo "aaa"
#else
#echo "bbb"
fi
done
exit 0
Re: 紧急求助 如何获得一个目录下所有.apk结尾的文件的大小。如果都小于某个值就返回0,有1个大于参考值就返回1
发表于 : 2012-10-16 11:26
由 YeLee
Re: 紧急求助 如何获得一个目录下所有.apk结尾的文件的大小。如果都小于某个值就返回0,有1个大于参考值就返回1
发表于 : 2012-10-16 17:41
由 hhht
代码: 全选
find -iname "*.apk" -size +10|ls -l -k |awk '{print $9" size is: " $5"KB" } ' #找出当前目录下打大于10byte的文件。 同时输出文件名和大小
这句可以代替我上面代码中的函数。接下来接续解决怎么在调用该语句时不输出错误,同时根据条件exit 0 或者exit 1
实际效果如下:
不知怎的明明时前面过滤出了apk包,然后通过管道进行了ls -l, 结果ls -l把路径下所有的包都处理了
xb@renren:~/shellLearning/a$ ls
13.apk 13.sh 1.apk CpuMemoryTest.apk s.apk Untitled Document
13.apk~ 13.sh~ 1.apk~ Main-debug-unaligned.apk s.apk~ Untitled Document~
xb@renren:~/shellLearning/a$ ls
13.apk 1.apk CpuMemoryTest.apk s.apk
13.sh 1.apk~ Main-debug-unaligned.apk Untitled Document
xb@renren:~/shellLearning/a$ find -iname "*.apk" -size +10|ls -l -k |awk '{print $9" size is: " $5"KB" }'
size is: KB #多输出了这行。没看明白怎出的错
13.apk size is: 1KB
13.sh size is: 1KB
1.apk size is: 1KB
1.apk~ size is: 0KB
CpuMemoryTest.apk size is: 43KB
Main-debug-unaligned.apk size is: 38KB
s.apk size is: 1KB
Untitled size is: 1KB
xb@renren:~/shellLearning/a$
Re: 紧急求助 如何获得一个目录下所有.apk结尾的文件的大小。如果都小于某个值就返回0,有1个大于参考值就返回1
发表于 : 2012-10-16 17:43
由 YeLee
Re: 紧急求助 如何获得一个目录下所有.apk结尾的文件的大小。如果都小于某个值就返回0,有1个大于参考值就返回1
发表于 : 2012-10-16 17:54
由 hhht
hhht 写了:代码: 全选
find -iname "*.apk" -size +10|ls -l -k |awk '{print $9" size is: " $5"KB" } ' #找出当前目录下打大于10byte的文件。 同时输出文件名和大小
这句可以代替我上面代码中的函数。接下来接续解决怎么在调用该语句时不输出错误,同时根据条件exit 0 或者exit 1
实际效果如下:
不知怎的明明时前面过滤出了apk包,然后通过管道进行了ls -l, 结果ls -l把路径下所有的包都处理了
xb@renren:~/shellLearning/a$ ls
13.apk 13.sh 1.apk CpuMemoryTest.apk s.apk Untitled Document
13.apk~ 13.sh~ 1.apk~ Main-debug-unaligned.apk s.apk~ Untitled Document~
xb@renren:~/shellLearning/a$ ls
13.apk 1.apk CpuMemoryTest.apk s.apk
13.sh 1.apk~ Main-debug-unaligned.apk Untitled Document
xb@renren:~/shellLearning/a$ find -iname "*.apk" -size +10|ls -l -k |awk '{print $9" size is: " $5"KB" }'
size is: KB #多输出了这行。没看明白怎出的错
13.apk size is: 1KB
13.sh size is: 1KB
1.apk size is: 1KB
1.apk~ size is: 0KB
CpuMemoryTest.apk size is: 43KB
Main-debug-unaligned.apk size is: 38KB
s.apk size is: 1KB
Untitled size is: 1KB
xb@renren:~/shellLearning/a$
代码: 全选
过滤输出结局了,加了xargs。效果如下:
xb@renren:~/shellLearning/a$ find -iname "*.apk" -size +10|xargs ls -l -k |awk '{print $9" size is: " $5"KB" }'
./CpuMemoryTest.apk size is: 43KB
./Main-debug-unaligned.apk size is: 38KB
接下来继续把前面的./处理掉。一点一点进步。嘿嘿
过滤输出解决了,
Re: 紧急求助 如何获得一个目录下所有.apk结尾的文件的大小。如果都小于某个值就返回0,有1个大于参考值就返回1
发表于 : 2012-10-16 17:58
由 eexpress
● type find-opera-1M
find-opera-1M 是 `find ~/.opera/cache*/ -iname "opr*.tmp" -cmin -60 -size +1000k -printf "------\t%p\t► %Cr\t► %kK\t►" -exec file -b {} \;' 的别名
find 带的printf 多强。何必awk。。。