天天看點

Ruby和SHELL中如何周遊指定目錄的檔案

在工作中我們有在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      
#!/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      
#!/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"