亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

Ruby和SHELL中如何遍歷指定目錄的文件

標簽:
Ruby


在工作中我们有在Ruby和SHELL中如何遍历指定目录的文件的需求,这个应该如何来实现呢?网上的方法也非常之多,我们可以拿来参考参考,如下边的traverse.rb文件内容所示:

#!/usr/bin/ruby 

def traverse(path)

    if File.directory?(path)

      puts "Dirs:" + path

      Dir.foreach(path) do |file|

        if file != "." and file != ".."

          traverse(path + "/" + file)

        end

      end

    else

      puts "Files:" + path

    end

  end

   

traverse("d:/vmware")

其实ruby中已经定义了Find.find方法来处理这种情况,上面的ruby程序可以用其方法来实现,代码显得更为整洁,如下所示:

#!/usr/bin/ruby 

require  'find'

Find.find("/usr/local/src") do |filename|

  p filename

end

我们还可以利用Find.find方法来输出ruby中可用的rb库,如下所示:

#!/usr/bin/ruby 

require "find"

def printrb

  $:.each do |dir|

    next if dir == "."

    next if dir == ".."

    Find.find(dir) do |f|

        if f =~ /\.rb$/i

            puts f 

        end

    end

  end

end 

printrb

如果我们用shell脚本来实现类似需求,比如想遍历/usr/local/src目录里面包含的所有文件(包括子目录),那么应该如何实现呢?这里也会用到递归的思想,脚本如下:

#!/bin/bash  

function traverse(){

for file in `ls $1`

      do

         if [ -d $1"/"$file ]

         then

            traverse $1"/"$file

         else

            echo $1"/"$file 

         fi

      done

   }

traverse "/usr/local/src"

©著作权归作者所有:来自51CTO博客作者抚琴煮酒的原创作品,如需转载,请注明出处,否则将追究法律责任

ruby递归traverse运维开发(DevOps)篇


點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消