shell遍历文件夹并执行命令

背景:

有一个源码包里面包含很多子目录和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

 

你可能感兴趣的:(shell)