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

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    详解shell 遍历文件夹内所有文件并打印绝对路径

    例如你有一个文件夹路径是 /wls,如果想要遍历这个文件夹内的所有文件,并将它们保存到数组中,利用shell你可以这样做

    for file in /wls/*
    do
        if test -f $file
        then
            arr=(${arr[*]} $file)
        fi
    done
    echo ${arr[@]}

    这样就可以遍历wls文件夹下的所有文件并把它们的绝对路径存在arr这个数组中,但这还是不够的,因为文件夹中可能会有多个子文件夹,如果只过滤文件会遗漏掉子文件夹中的文件,所以需要扩展上面的方法,如果我们只考虑两级目录的话可以这样写

    for file in /wls/*
    do
        if test -f $file
        then
            arr=(${arr[*]} $file)
        else
            for subfile in $file
                do
                    if test -f $subfile
                    then
                        arr=(${arr[*]} $subfile)
                    fi
                done
        fi
    done
    echo ${arr[@]}

    这样就可以把目标文件夹下的两级目录内所有文件的绝对路径获取到,那么如果有多级子目录的情况呢,这就要求我们去写一个function来协助我们

    function getdir(){
        echo $1
        for file in $1/*
        do
        if test -f $file
        then
            echo $file
            arr=(${arr[*]} $file)
        else
            getdir $file
        fi
        done
    }
    getdir /wls
    echo ${arr[@]}
    

    通过递归调用getdir就可以实现将wls文件夹内所有文件的绝对路径保存到数组中。

    以上的方法在处理NAS日志的问题中很有效,可以将所有日志文件遍历一遍,当然关于日志文件名的过滤这里要读者自己实现。

    您可能感兴趣的文章:
    • Shell脚本遍历目录并批量修改文件编码
    • shell递归输出文件名和目录名的方法
    • shell获取目录下所有文件夹的名称并输出的实例
    • linux Shell获取某目录下所有文件夹的名称
    • 利用shell脚本遍历文件夹内所有的文件并作整理统计的方法
    • shell脚本递归遍历目录及子目录的例子分享
    • shell 递归遍历目录下的所有文件并统一改名的方法
    上一篇:Linux shell 之 提取文件名和目录名的一些方法总结
    下一篇:在linux的终端退出python命令行的方法
  • 相关文章
  • 

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

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

    详解shell 遍历文件夹内所有文件并打印绝对路径 详解,shell,遍历,文件夹,