Schrift
[thread]8627[/thread]

Verschiebung von Dateien: Auswahl und anschließende Verschiebung v

Leser: 1


<< |< 1 2 >| >> 11 Einträge, 2 Seiten
Samson
 2007-01-08 22:59
#72962 #72962
User since
2007-01-02
4 Artikel
BenutzerIn
[default_avatar]
Hallo zusammen!!!
Ich habe ein Programm das mir Dateien auflistet und will manche (nicht alle) Dateien auf eine andere Festplatte verschieben. Wie markiere ich diese Dateien die ich verschieben will und wie verschiebe ich sie anschließend? (Ich bin kein Profi)
Vielen Dank im vorraus für eure Hilfe
sesth
 2007-01-08 23:12
#72963 #72963
User since
2005-02-01
181 Artikel
BenutzerIn
[default_avatar]
Hi Samson,

Du drückst Dich etwas unklar aus. Ist das Programm, dass die Dateien auflistet ein Perl-Programm oder ein anderes Programm. Willst Du also die Auflistung in Perl machen oder nur eine Liste einlesen? Zum Markieren der Dateien benötigst Du Kriterien, die Du nicht preisgibst - vermutlich werden Dir da aber reguläre Ausdrücke weiterhelfen.

Zum Verschieben kannst Du das Modul CPAN:File::Copy verwenden. Dort gibt es eine move-Funktion.
Gruß
Thomas
Gast Gast
 2007-01-08 23:37
#72964 #72964
Hallo sesth,
dieses Programm ist ein Perlprogramm und die Auflistung findet in Perl statt. Die Dateien bestehen aus vielen unterschiedlichen Dateitypen! Was du jetzt genau mit Kriterien meist verstehe ich nicht.?!
sesth
 2007-01-09 00:17
#72965 #72965
User since
2005-02-01
181 Artikel
BenutzerIn
[default_avatar]
Hi Samson,

hier ein Beispiel:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
#!/usr/bin/perl

use File::Copy;

foreach my $file (glob '*.txt') {
    if (-M $file > 3) {
        move($file, '\\archiv\\' . $file) or warn "$file: $!";
    }
}

Das Skript verschiebt alle Dateien mit der Endung *.txt, die im lokalen Verzeichnis liegen und vor mehr als 3 Tagen zuletzt beschrieben wurden in ein Verzeichnis "archiv" unter der Root. Das sind die "Kriterien".
Gruß
Thomas
Samson
 2007-01-09 21:19
#72966 #72966
User since
2007-01-02
4 Artikel
BenutzerIn
[default_avatar]
Hallo sesth und der Rest des Forums,

warscheinlich drücke ich mich nicht verständlich genug aus, aber ich probiere es nochmal etwas besser!
Ich habe ein Programm das doppelte Dateien auf einer Festplatte sucht(Ich habe es unten mal beigefügt). Das Programm gibt mir dann alle doppelten Dateien mit sämtlich unterschiedlichen Endungen aus und die will ich anschließend noch sortieren, da manche doppelten Dateien noch auf dieser Festplatte gebraucht werden. Wenn die doppelten Dateien sortiert sind sollen die Dateien die noch gebraucht werden, da bleiben wo sie sind und die anderen beispielsweise auf eine andere Festplatte gespielt werden.

**************************************
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#!/usr/bin/perl  -w
use File::Find;
my %files;

find(\&todo, ".");

sub todo
{
my $wd = `pwd`;
chomp($wd);
my @lst = lstat;
if((-f) # normal file
&& (not -l) # and not a symbolic link
&& ($lst[3] == 1) # number of hard links == 1
&& ($lst[7] > 0) # size > 0
)
{
$_ =~ s/\'/\'\\\'\'/g;
print "file: \'$_\'\n";
my @md5sum = `md5sum \'$_\'`;
$md5sum = $md5sum[0];
chomp $md5sum;

$md5sum =~ s/(.{32}).*/$1/;
cont:
if(exists $files{$md5sum})
{
if(system "cmp -s \'$files{$md5sum}[0]->{'name'}\' \'$_\'")
{
$md5sum = $md5sum . "_";
goto cont;
}
}
my %tmp;
$tmp{'path'} = $wd;
$tmp{'file'} = $_;
$tmp{'name'} = $wd. "/" .$_;
push @{$files{$md5sum}}, \%tmp;
}
}


foreach(keys %files)
{
if($#{$files{$_}})
{
my $num = $#{$files{$_}} + 1;
my $file_1 = ${$files{$_}}[-1]->{'name'};
my $container_dir = "/cygdrive/r/prjshare/fo00bc/container/$_";
my $container = "$container_dir/${$files{$_}}[-1]->{'file'}";
print("\n\n# +++ file: \"$file_1\" exists $num times\n");
print("mkdir -p \'$container_dir\'\n");
print("\n# bewege\"$file_1\" in container\n\n");
print("mv \'$file_1\' \'$container\'\n");
foreach(@{$files{$_}})
{
print "#\tfile: $_->{'name'}\n";
print "rm -f \'$_->{'name'}\'\n";
print "ln -s \'$container\' \'$_->{'name'}\'\n";
}
}
else
{
# it's a unique file
}
}

********************************************

Danke für euren Einsatz!!!!!\n\n

<!--EDIT|renee|1168370650-->
renee
 2007-01-09 21:27
#72967 #72967
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Und was ist jetzt die Frage?

Kopieren von Dateien:
CPAN:File::Copy (hat sesth schon gesagt)
Löschen von Verzeichnissen (mit Inhalt):
CPAN:File::Path
Löschen von (leeren Verzeichnissen):
rmdir (perldoc -f rmdir)
Erstellen von Verzeichnissen:
CPAN:File::Path
mkdir (perldoc -f mkdir)
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Samson
 2007-01-09 21:39
#72968 #72968
User since
2007-01-02
4 Artikel
BenutzerIn
[default_avatar]
Hallo renee,

wie ich sie verschiebe ist mir jetzt schon klar, nur wie ich die doppelten Dateien am besten auswähle die ich nicht brauche.!? Am schönsten wäre es, wenn der Benutzer sie per Mausklick anklicken könnte und auswählen kann, nur das ist soweit ich weiß ja nicht möglich.

Und die Frage ist wie ich das am besten lösen könnte?
renee
 2007-01-09 21:45
#72969 #72969
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Soll das ein Konsolenprogramm geben, Webapplikation, GUI?
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Samson
 2007-01-09 22:39
#72970 #72970
User since
2007-01-02
4 Artikel
BenutzerIn
[default_avatar]
Nein,also mit Graphischen Oberflächen wollte ich eigentlich nicht arbeiten, es muss ja nicht per Maus ausgewählt werden. Ich will sie einfach nur irgendwie markieren, so dass das Programm weiß welche ich verschieben will!!!
pq
 2007-01-09 22:48
#72971 #72971
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
CPAN:Curses::UI, CPAN:Curses::Widgets, wenn du's hübsch haben willst.
CPAN:IO::Prompt fuer einfaches prompting.\n\n

<!--EDIT|pq|1168375739-->
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
<< |< 1 2 >| >> 11 Einträge, 2 Seiten



View all threads created 2007-01-08 22:59.