码迷,mamicode.com
首页 > 系统相关 > 详细

linux shell for循环解决递归循环目录结构

时间:2016-03-02 22:15:44      阅读:252      评论:0      收藏:0      [点我收藏+]

标签:编程语言   linux   c语言   file   资源   

今天总结一下关于linux shell里的递归循环的问题
起因是一个群友在群里的提问
问的是怎么把有或多或少空目录的几个文件移动走的问题
归根结底就是一个递归循环的问题

如果之前接触过c语言之类的编程语言、那么这个很好理解
就是通过函数来不断的自己调用自己
这种方法有一个很大的弊端就是需要很多资源
比如有一种进程调用的 fork 炸弹 就是自调用搞的

接下来我就贴一下代码然后简单的讲解一下

#!/bin/sh
. /etc/plus.lib
a()
{
    for file  in `ls $1`
    do
        if [ -d $1"/"$file ];then
            a $1"/"$file
        else
            echo $1"/"$file
        fi
    done
}
a /tmp

那么这个就是整个的代码
通过一个大的循环
然后判断是目录还是文件
如果是一个文件的话、就把它echo出来、当然这个脚本没有功能、
如果是想要做一些处理的话、可以自行处理
如果不是一个文件而是一个目录的话、
那就调用自己重新循环一遍当前目录

root@lp:/tmp/tmp# sh a.sh 
/tmp/a/01
/tmp/a/1/02
/tmp/a/1/asdasf/ashfakjsgba
/tmp/a/aaa
/tmp/b/03
/tmp/tmp/a.sh

就总结这么多,以后有机会再补充

本文出自 “Dashazi's blog” 博客,转载请与作者联系!

linux shell for循环解决递归循环目录结构

标签:编程语言   linux   c语言   file   资源   

原文地址:http://dashazi.blog.51cto.com/10354524/1746882

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!