2011-10-18 145 views
0

我在分割文件路徑和獲取文件名時遇到問題。刪除DIR上的文件路徑

這裏是我的代碼:

file=File.new("files.txt", "w") 
file_list=Dir["../path/*txt"] 

file.puts file_list 

我嘗試了幾種不同的方法來拆分,但我不斷收到陣列錯誤,

最好的問候,

AZCards

+0

你想要什麼內容的'files.txt'?它應該是所有指定文件的內容(在你的情況下'* .txt')合併成一個大的結果文件? – WarHog

+0

Files.txt將包含該目錄中具有.txt結尾的文件列表,實際上我只是需要這些文件的文件名,而沒有txt沒有路徑。 – azcards

+0

何時/如何得到「陣列錯誤」? – inger

回答

2

請嘗試下面的代碼片段:

file = File.new("files.txt", "w") 
Dir['../path/*.txt'].each { |f| file.puts File.basename(f, '.txt') } 

這給你一個沒有'txt'擴展名的文件夾列表。

+0

作品完美,謝謝! – azcards

0
file=File.new("files.txt", "w") 
Dir.entries("/path/to/directory").each do |path| 
    m = /([^\/]+)\.txt$/.match(path) 
    file.puts m[1] if m 
end 
0

只需映射完整路徑列表,使用basename即可生成裸文件名列表。 假設你可以刪除擴展名:

file = File.new("files.txt", "w") 
file_list = Dir["../path/*txt"].map {|f| File.basename f, '.txt'} 

file.puts file_list 
+0

這也起作用,但它保留了文件擴展名,所以我使用了WarHog。雖然謝謝! – azcards

+0

你在使用哪種Ruby? MRI不保留文件擴展名,事實上,File.basename調用與WarHog的解決方案相同。 – inger