Thread Kopieren in ein Verzeichnis (22 answers)
Opened by joey at 2003-09-24 17:24

utang
 2004-01-04 22:22
#55649 #55649
User since
2004-01-03
30 Artikel
BenutzerIn
[default_avatar]
Ich möchte ein Verzeichnis,samt inhalt(Datein und Unterverzeichnisse) kopieren.
Das Programm wie gleich aufgeführt macht folgendes:

Code: (dl )
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
use Cwd;
use File::Copy;

$DST_DIR = "/home/tmarsh/.fluxbox/"; #das ist das Ziel Verzeichnis
$SRC_DIR = "/usr/portage/x11-wm/fluxbox"; #das ist das Quellverzeichnis,ab da alles kopieren

mkdir("$DST_DIR",0755) or die "kann $DST_DIR nicht erstellen: $!\n"; #legt das Zielverzeichnis an

Fluxfscan("$SRC_DIR"); #ruft die Funktion auf, und fängt in dem verzeichniss an zu arbeiten was ich übergeben habe

sub Fluxfscan {
my ($workdir) = shift; # hier wird die varaible von dem Funktionsaufruf übergeben
my ($startdir) = &cwd; #hier wird festgestellt in welchen Verzeichnis ich mich gerade in der Console befinde

chdir($workdir) or die "Kann nicht in $workdir wecheseln: $!\n"; #hier wechselt er von dem Consolen-verzeichnis ins arbeitsverzeichnis
opendir(USR,".") or die "Kann $workdir nicht öffnen: $!\n";
my @names = readdir(USR);
closedir(USR);

foreach my $name (@names) {
next if ($name eq "."); #überspringt "."
next if ($name eq ".."); # überspringt ".."

print "$name\n";

# if (-d $name) { #wenn $name ein verzeichnis ist ...
# mkdir("$DST_DIR"."$name",0755) or die "Kann $name nicht anlegen\n"; #legt er in dem DST_DIR den neuen unterverzeichnis namen an
# &Fluxfscan($SRC_DIR . $name); #hier ruft er die Funktion wiedrum auf um den inhalt des neuen DIRS festzustellen
# next;
}
copy("$name","$DST_DIR"); #kopieren der datein ins DST_DIR
}
chdir($startdir) or die "Kann nicht in $startdir wechseln: $!\n"; #wecheslt von dem workdir ins ursprüngleche consolen dir zurück
}


die variable $name enthält zum beispiel folgende reihenfolge:

flubox/
- aDatei
- bDatei
- cDatei
- dVerzeichnis
- dVerzeichnis-aDatei
- dVerzeichnis-bDatei
-eDatei
-fDatei

mein eben aufgeführtes script kopiert die Datein (a,b,c,e,f) ins $DST_DIR, und lässt das Unterverzeichniss ausser acht. Wenn ich nun
Code: (dl )
1
2
3
4
if (-d $name) {
mkdir("$DST_DIR"."$name",0755) or die "Kann $name nicht anlegen\n";
&Fluxfscan($name);
next;

verwende, passiert es das er mir das Unterverzeichnis richtig anlegt,aber mir alle Datein ins DST_DIR kopiert ohne zu berücksichtigen wohin bzw. in welche unterverzeichnisse hinein gehören.

Konnte ich es so einigermassen beschreiben? Ist nur die FRage wie ich das realisiere das er mir die richtigen Datein in die richtigen unterverzeichnisse kopiert.

View full thread Kopieren in ein Verzeichnis