• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    shell脚本递归遍历目录及子目录的例子分享

    用shell写的递归遍历目录的脚本,脚本实现递归遍历指定目录,打印目录下的文件名。

    实例1:

    复制代码 代码如下:

    #!/bin/sh

    function scandir() {
        local cur_dir parent_dir workdir
        workdir=$1
        cd ${workdir}
        if [ ${workdir} = "/" ]
        then
            cur_dir=""
        else
            cur_dir=$(pwd)
        fi

        for dirlist in $(ls ${cur_dir})
        do
            if test -d ${dirlist};then
                cd ${dirlist}
                scandir ${cur_dir}/${dirlist}
                cd ..
            else
                echo ${cur_dir}/${dirlist}
            fi
        done
    }

    if test -d $1
    then
        scandir $1
    elif test -f $1
    then
        echo "you input a file but not a directory,pls reinput and try again"
        exit 1
    else
        echo "the Directory isn't exist which you input,pls input a new one!!"
        exit 1
    fi

    实例2:递归读取目录及其子目录

    复制代码 代码如下:
    #! /bin/bash
    function read_dir(){
        for file in `ls $1`
        do
            if [ -d $1"/"$file ]  //注意此处之间一定要加上空格,否则会报错
            then
                read_dir $1"/"$file
            else
                echo $1"/"$file
            fi
        done
    }

    #测试目录 test
    read_dir test


    这样给test.sh加上执行权限即可执行
    复制代码 代码如下:
    chmod +x test.sh
    sh test.sh

    到此即可通过传递参数来读取目录文件了。

    实例3:

    复制代码 代码如下:

    递归实现各个子目录孙目录......

    #!/bin/bash

    #modify.func

    doit()   //处理当前目录下的非目录文件,忽略目录文件

    {

        oldname=`ls | grep "$1$"`

        for name in $oldname

        do

           if [ -d "$name" ]

           then :

           else

                basename=`echo $name | awk -F "." '{print $1}'`  

                newname="$basename$2"                                       

                echo -e "$PWD/$name\t\t$newname"

                mv $name $newname

                count=`expr ${count} + 1`

           fi

        done

        return 0

    }

    do_recursive()          //从当前目录开始,递归处理各目录

    {

        doit $1 $2

        for filename in `ls`

        do

             if [ -d "$filename" ]

             then

                 cd $filename

                 do_recursive $1 $2

                 cd ..

             fi

        done

        return 0

    }

    modify()                     //处理当前目录,并报告结果,这个相当于主函数,也可以直接调用do_recursive

    {

        PARAMS=2

        if [ $# -ne $PARAMS ]

        then

            echo "usage: mv_to .suf1 .suf2"

            return 1

        fi

        count=0

        do_recursive $1 $2

        echo "complete! $count files have been modified."

        return 0

    }

    您可能感兴趣的文章:
    • Shell脚本遍历目录并批量修改文件编码
    • shell递归输出文件名和目录名的方法
    • shell获取目录下所有文件夹的名称并输出的实例
    • linux Shell获取某目录下所有文件夹的名称
    • 利用shell脚本遍历文件夹内所有的文件并作整理统计的方法
    • 详解shell 遍历文件夹内所有文件并打印绝对路径
    • shell 递归遍历目录下的所有文件并统一改名的方法
    上一篇:shell按行读取文件的3种方法
    下一篇:shell脚本正则匹配文件中的Email并写入到文件中代码分享
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    shell脚本递归遍历目录及子目录的例子分享 shell,脚本,递归,遍历,目录,