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