Chinaunix首页 | 论坛 | 博客
  • 博客访问: 482444
  • 博文数量: 120
  • 博客积分: 1853
  • 博客等级: 上尉
  • 技术积分: 1177
  • 用 户 组: 普通用户
  • 注册时间: 2011-10-22 22:40
文章分类

全部博文(120)

文章存档

2013年(16)

2012年(104)

分类: Python/Ruby

2012-02-22 19:56:39

问题:mkdir dir[0-9]创建文件夹时,并没有如预期创建dir0~dir9这几个文件夹,而是创建了dir[0-9]这一个文件夹。

 

网上看了些相关资料,发现以前对[0-9]的理解不够透彻:

 

“由于[0-9]这种匹配模式是出现在命令的 argument位置上,所以由shell负责解释(所以严格而言, [0-9]是通配符,而不是正则表达式)。对shell而言,统配符只对文件名有效,也就是说,当shell遇到出现在某个命令行的argument位置 上的通配符时,它先要去参数所指定的目录下搜索所有已经存在的文件,所有文件名字与之匹配的都要替换到argument位置上(这与很多标准的命令支持多 个文件名参数是一致的),然后调用该命令执行. 
 
对于mkdir ./dir[0-9]而言,shell无法在当前目录下找到与之匹配的文件名,所以就不替换,dir[0-9]按照原样传给mkdir程序,所以mkdir就建立了一个名字为dir[0-9]的目录. 
 
 总之一句话,通配符(出现在argument位置)由shell负责解释(与现有的文件名匹配),与具体的命令(ls,rm,mkdir)无关.正则表达式(出现在option位置上)由具体的应用程序解释(grep,sed,awk),与shell无关。”

 

---引自:http://blog.chinaunix.net/u/19782/showart_340548.html

 

那么如何利用mkdir批量创建文件夹呢?

1.seq -f "dir%01g" 1 9| xargs mkdir

 #seq -f :格式化输出,有点类似printf

2.mkdir dir{1..5}



---引自 http://blog.csdn.net/tbocd/article/details/4194851

阅读(12633) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~