ACHTUNG. Das ist ein Archiv des alten forum.ruby-portal.de. Die aktuelle Mailingliste gibt es auf lists.ruby-lang.org/pipermail/ruby-de.

NOTICE. This is a ready-only copy of the old forum.ruby-portal.de. You can find the current mailing list at lists.ruby-lang.org/pipermail/ruby-de.

Die Programmiersprache Ruby

Blog|

Forum|

Wiki  


Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]

Ein neues Thema erstellen Auf das Thema antworten  [ 1 Beitrag ] 
Autor Nachricht
BeitragVerfasst: 03 Sep 2010, 00:40 
Offline
Son-shi

Registriert: 23 Feb 2004, 14:59
Beiträge: 941
Wohnort: Esslingen
Folgendes Problem:
Ausgehend von einem Startverzeichnis will ich in ein Zielverzeichnis wandern und dabei in jedem Verzeichnis etwas machen.

Anbei ein Lösungsvorschlag mit Testbeispiel.
Verbesserungsvorschläge sind willkommen - irgendwie habe ich den Eindruck es sollte einfacher gehen.

Auf Prüfungen, ob die Verzeichnisse überhaupt existieren habe ich (noch) verzichtet.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
class Dir
def self.walk_from_to( from, to)

exp_from = File.expand_path(from).split(File::SEPARATOR)
exp_to = File.expand_path(to).split(File::SEPARATOR)

#Get common start point
common = []
0.upto(exp_from.size){|i|
if exp_from[i] == exp_to[i]
common << exp_from[i]
else
break
end
}

#Go down, but without common location
(exp_from.size).downto(common.size+1){|i|
Dir.chdir(File.join(exp_from[0...i])){ yield }
}
#Go up, including the common directory
common.size.upto(exp_to.size){|i|
Dir.chdir(File.join(exp_to[0..i-1])){ yield }
}

end #def self.walk_from_to( from, to)
end

if $0 == __FILE__
require 'fileutils'
#Testverzeichnisse aufbauen
FileUtils.mkdir_p('1/2/3/4/5')
FileUtils.mkdir_p('a/b/c/d/e')

puts "Test 1: 5--1--a--e"
Dir.walk_from_to('1/2/3/4/5', 'a/b/c/d/e'){
puts Dir.pwd
}

puts "Test 2: 5--3"
Dir.walk_from_to('1/2/3/4/5', '1/2/3/'){
puts Dir.pwd
}

puts "Test 3: 3--5"
Dir.walk_from_to('1/2/3', '1/2/3/4/5'){
puts Dir.pwd
}

end

_________________
http://ruby.lickert.net/
http://gems.rubypla.net/


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 1 Beitrag ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach: