您好,登錄后才能下訂單哦!
在工作中我們有在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"
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。