背景:
有一個源碼包里面包含很多子目錄和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