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

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。