背景:
有一个源码包里面包含很多子目录和makefile,打包后的压缩包太大,需要将make生成的所有二进制文件删除然后再打包。
需求:
因此,要求在制定目录的所有递归子目录中执行make clean以清楚所有的目标文件。
代码:
写了一段简单的shell脚本,有两个功能:
1.遍历所有子目录,如果存在Makefile就执行make clean(当然也可以干更多的事);
2.列出所有子目录下大于10M(当然也可以指定其他值)的文件。
话不多说上代码:
#!/bin/bash run_make() { #如果该目录下存在Makefile if [ -f "Makefile" ];then echo "" echo ===================== FOUND =================== pwd; echo =============================================== make clean; fi } run_ls() { pwd; #列出大于10M的文件 #ls -l |awk '{if($5 > 10485760){print $5}}' ls -l |awk '{if($5 > 10485760){print "--",$9,$5}}' echo "" } myfunc() { cd $1; #run_make; run_ls; for x in $(ls .) do if [ -d "$x" ];then myfunc $x; cd .. fi done } p=. if [ $1 ];then p=$1 fi echo $p myfunc $p