2009-03-27 5 views
0

私は与えられたファイルタイプのファイルのディレクトリを解析し、その場所(ファイル名を含む)を配列に格納する小さなスクリプトを作成します。これは次のようになります。指定された文字列のファイル名と拡張子を切り捨てます

def getFiles(directory) 
    arr = Dir[directory + '/**/*.plt'] 
    arr.each do |k| 
    puts "#{k}" 
    end 
end 

出力はパスとファイルです。しかし、私はその道だけを望む。

の代わりに私が欲しい/foo/bar.txtのみ/ fooの/

私が最初に考えたのは、正規表現だったが、私はそれを行う方法がわからないです。

答えて

7

File.dirnameは何でもよいですか?

File.dirname DIR_NAME

戻り、最後 1以外file_nameの中で与えられたファイル名 のすべてのコンポーネント→(FILE_NAME)。ファイル名は、 ローカルファイル システムで使用されている に関係なく、スラッシュ( ``/'')を使用して構成する必要があります。正規表現については

File.dirname("/home/gumby/work/ruby.rb") #=> "/home/gumby/work" 
0

スラッシュで配列に分割し、最後の要素(ファイル名)を削除して、再び文字列に結合します。

次のコードは動作するはず
path = '/foo/bar.txt' 

path = path.split '/' 
path.pop 
path = path.join '/' 

# path is now '/foo' 
0

文字列の最後または最後までの正規表現がわかります。あなたが正規表現または分割を必要としない文字列

4

の終了前に「/」ではないすべての文字に

/[^\/]*+$/ 

Transliterates。

File.dirname("/foo/bar/baz.txt") 
# => "/foo/bar" 
0

、この作業をする必要があり、*は貪欲であることから:

.*/ 
関連する問題