Thread Verschiebung von Dateien: Auswahl und anschließende Verschiebung v (10 answers)
Opened by Samson at 2007-01-08 22:59

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-->

View full thread Verschiebung von Dateien: Auswahl und anschließende Verschiebung v