Ruby和SHELL中如何遍历指定目录的文件
在工作中我们有在Ruby和SHELL中如何遍历指定目录的文件的需求,这个应该如何来实现呢?网上的方法也非常之多,我们可以拿来参考参考,如下边的traverse.rb文件内容所示:
#!/usr/bin/rubydeftraverse(path)ifFile.directory?(path)puts"Dirs:"+pathDir.foreach(path)do|file|iffile!="."andfile!=".."traverse(path+"/"+file)endendelseputs"Files:"+pathendendtraverse("d:/vmware")
其实ruby中已经定义了Find.find方法来处理这种情况,上面的ruby程序可以用其方法来实现,代码显得更为整洁,如下所示:
#!/usr/bin/rubyrequire'find'Find.find("/usr/local/src")do|filename|pfilenameend
我们还可以利用Find.find方法来输出ruby中可用的rb库,如下所示:
#!/usr/bin/rubyrequire"find"defprintrb$:.eachdo|dir|nextifdir=="."nextifdir==".."Find.find(dir)do|f|iff=~/\.rb$/iputsfendendendendprintrb
如果我们用shell脚本来实现类似需求,比如想遍历/usr/local/src目录里面包含的所有文件(包括子目录),那么应该如何实现呢?这里也会用到递归的思想,脚本如下:
#!/bin/bashfunctiontraverse(){forfilein`ls$1`doif[-d$1"/"$file]thentraverse$1"/"$fileelseecho$1"/"$filefidone}traverse"/usr/local/src"
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。