免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 11178 | 回复: 6
打印 上一主题 下一主题

[原创]shell脚本创建多层目录 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-01-07 15:23 |只看该作者 |倒序浏览

  1. #!/bin/bash
  2. for file in a b c d e f g h i j k r l m n o p q l s t y u v w x z
  3. do
  4.     mkdir /var/spool/mail/$file
  5.     for file in a b c d e f g h i j k r l m n o p q l s t y u v w x z
  6.     do
  7.         cd /var/spool/mail/$file
  8.         for file in a b c d e f g h i j k r l m n o p q l s t y u v w x z
  9.         do
  10.             mkdir $file
  11.         done
  12.         cd ..
  13.     done
  14. done
复制代码


这是我为了方便在创建多层相同目录写的脚本,请高手不要见笑!

[ 本帖最后由 accepting 于 2008-1-7 15:32 编辑 ]

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
2 [报告]
发表于 2008-01-07 18:14 |只看该作者
不够灵活。

BTW,许多 mkdir 都支持 -p 参数的(递归创建多级目录)。

论坛徽章:
0
3 [报告]
发表于 2008-01-07 21:38 |只看该作者
对哦。我怎么没想过用递归的方法呢?哈哈。。。。谢谢版主!!!

论坛徽章:
0
4 [报告]
发表于 2008-01-07 21:50 |只看该作者

学习了

论坛徽章:
0
5 [报告]
发表于 2008-01-08 12:40 |只看该作者
这种需求只需要一条命令就可以完成:

mkdir -p {a..z}/{a..z}

论坛徽章:
0
6 [报告]
发表于 2008-01-08 12:46 |只看该作者
上面介绍的命令虽然简单,但是有一定的局限性,比如只能建立3~4级目录,再多就会出现argument too long 的错误,而且{a..z}的这种写法,也只有 bash3.0以上才支持。下面是一种比较通用的,建立任意多级别目录的方法:(程序里是5级目录,可以修改一下,建立任意多级,但是6级以上目录建立时间就N长了,可能要等半个多小时。
#!/bin/bash


mk5dirs()
{
  local level=$1
#  echo "level is $level"

  if [ $level -eq 0 ];then
    return 0
  fi

  for i in `seq -w 5`
  do
   mkdir -p $i
   cd $i
   mk5dirs $[$level-1]
   cd ..
  done
}

mk5dirs 5

论坛徽章:
0
7 [报告]
发表于 2008-01-08 12:48 |只看该作者
对应的python代码,是以字符作为目录名的,而不是数字:

#!/usr/bin/env python


import os
from random import choice
import string

l=string.ascii_letters

def mk5dirs(level):
  if level == 0:
    return
  for i in xrange(5):
    dirName="".join([choice(l) for k in xrange(8)])
    #os.mkdir(str(i))

    os.mkdir(dirName)
    #os.chdir(str(i))

    os.chdir(dirName)
    mk5dirs(level-1)
    os.chdir("..")

mk5dirs(6)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP