Schrift
[thread]6238[/thread]

Doppelte Dateien löschen: Löschen mit Fehlertoleranz (Seite 2)



<< |< 1 2 3 >| >> 30 Einträge, 3 Seiten
betterworld
 2004-05-08 19:25
#82090 #82090
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
Nein, es war nicht fehlerhaft, sondern fuer ein Verzeichnis gedacht, in dem ein paar mp3s liegen. Genauer gesagt war es einfach ein Shell-Einzeiler:
for i in *; do mv "$i" "`echo "$i" | sed 's/_/ /g;s/^.../Die Toten Hosen - /'`"; done

Als ich den, wie gesagt, aus Versehen im Homeverzeichnis losliess, habe ich mich zunaechst gewundert, warum das so lange dauert. Irgendwann habe ich Ctrl-C gedrueckt und bald festgestellt, dass ne Menge Dateien im Homeverzeichnis mit "Die Toten Hosen" anfingen.
Mithilfe einer nicht sehr alten Backup-CD konnte ich alles wieder herstellen
Netspider
 2004-05-08 19:30
#82091 #82091
User since
2003-09-25
49 Artikel
BenutzerIn
[Homepage] [default_avatar]
*g* das kann natürlich fatal enden,
bei mir können höchstens die mp3s futsch sein, und die habe ich in einer woche eh wieder komplett da.
muss mir gleich noch nen zufällige-mp3s-auf-den-stick-kopier script schreiben ^_^

da fällt mir gerade was ein, gibt es eigentlich einen kopierbefehl, so wie bei rename, nur eben kopieren...
ich will nicht unbedingt system() benutzen

und noch eine frage, wie bekomme ich den freien speicherplatz auf einem datenträger raus (usb-stick) - stat bringt mir was, aber nur ne ganz lange zahl ~ 40 stellen\n\n

<!--EDIT|Netspider|1084030710-->
perl -e "s;;Ronny Lindner;;m;(..).$;;$l=$1;s;n;;g;m;.{4}$;;$_=$l;$I=$&;m;^(.);;$_.='ts';$_.=$1;$_++;$_++;$_.=$I;print ucfirst;"
Crian
 2004-05-10 12:01
#82092 #82092
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
[quote=Netspider,08.05.2004, 17:30]da fällt mir gerade was ein, gibt es eigentlich einen kopierbefehl, so wie bei rename, nur eben kopieren...
ich will nicht unbedingt system() benutzen[/quote]

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
NAME
   File::Copy - Copy files or filehandles

SYNOPSIS
           use File::Copy;

           copy("file1","file2");
           copy("Copy.pm",\*STDOUT);'
           move("/dev1/fileA","/dev2/fileB");

           use POSIX;
           use File::Copy cp;

           $n = FileHandle->new("/a/file","r");
           cp($n,"x");'
\n\n

<!--EDIT|Crian|1084176178-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
ptk
 2004-05-10 14:01
#82093 #82093
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
[File::Copy SYNOPSIS] Das steht tatsaechlich so im Pod? --- Da habe ich gleich mal einen Patch an die Perl5-Porters geschickt :-)
Crian
 2004-05-10 14:19
#82094 #82094
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
mit welchem Inhalt?
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
ptk
 2004-05-10 15:29
#82095 #82095
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
--- perl-5.8.x/lib/File/Copy.pm	2003-12-05 20:43:59.000000000 +0100
+++ new.perl-5.8.x/lib/File/Copy.pm 2004-05-10 11:56:38.000000000 +0200
@@ -274,8 +274,7 @@
copy("Copy.pm",\*STDOUT);
move("/dev1/fileA","/dev2/fileB");

- use POSIX;
- use File::Copy cp;
+ use File::Copy "cp";

$n = FileHandle->new("/a/file","r");
cp($n,"x");'


In der von dir ausgeschnitteten noch aelteren Version des Pods waren sogar noch versteckte single quotes enthalten (hinter der zweiten Zeile mit copy und in der letzten Zeile).

Schon nach einer halben Stunde wurde der Patch akzeptiert :-)

Ups, ich sehe gerade, dass ich den zweiten single quote nicht angemeckert habe. Das habe ich jetzt nachgeholt...
Crian
 2004-05-10 17:17
#82096 #82096
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
oh stimmt, die hab ich gar nicht gesehen :-)

Dann wars ja gut, dass ich in diesem Fall nicht nur auf die perldoc-Ausgabe verwiesen habe.\n\n

<!--EDIT|Crian|1084195125-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
Netspider
 2004-05-10 19:36
#82097 #82097
User since
2003-09-25
49 Artikel
BenutzerIn
[Homepage] [default_avatar]
sorry dass ich nichts mehr geschrieben habe, das mit dem file::copy ist mir kurz danach auch eingefallen, ich hab das kopierprogramm gestern noch fertiggemacht *g*

funktioniert super, der kopiert solange, bis die kapazität auf dem stick kleiner ist als das lied, was drauf kopiert werden soll...
perl -e "s;;Ronny Lindner;;m;(..).$;;$l=$1;s;n;;g;m;.{4}$;;$_=$l;$I=$&;m;^(.);;$_.='ts';$_.=$1;$_++;$_++;$_.=$I;print ucfirst;"
Crian
 2004-05-11 15:21
#82098 #82098
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Wie ermittelst Du denn die freie Kapazität auf dem Stick?
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
Netspider
 2004-05-11 21:27
#82099 #82099
User since
2003-09-25
49 Artikel
BenutzerIn
[Homepage] [default_avatar]
hier mal das ganze script:

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
use File::Copy;
use Win32API::File qw(:ALL);
use Win32::DriveInfo;

$ordner="Songs";
$stick="k:";

$type=GetDriveType($stick);
die unless $type==DRIVE_REMOVABLE;

opendir(d,"$ordner") or do { print "$!"; exit; };
@files=grep {/\.mp3$/} readdir d or do { print "$!"; exit; };
closedir(d);

##############
$free = (Win32::DriveInfo::DriveSpace($stick))[6];
$z=int(rand scalar @files);
$needed=(stat($ordner."/".$files[$z]))[7];

$kopiert=0;
while($free >= $needed)
{
$kopiert++;

print "$kopiert:\t Kopiere ".$files[$z];
copy($ordner."/".$files[$z], $stick."/".$files[$z]);

$free = (Win32::DriveInfo::DriveSpace($stick))[6];
$z=int(rand scalar @files);
$needed=(stat($ordner."/".$files[$z]))[7];

print " ".(int($free / (1024 * 1024)))."Mb frei\n";
}

print "$kopiert Dateien kopiert";
<>;
exit;
_ _ data _ _
DRIVE_UNKNOWN
DRIVE_NO_ROOT_DIR
DRIVE_REMOVABLE
DRIVE_FIXED
DRIVE_REMOTE
DRIVE_CDROM
DRIVE_RAMDISK


man muss eigentlich nur ganz oben die beiden variablen ändern, dann läufts, ich habe das script einen ordner über meinen mp3s liegen
dann lösch ich alle mp3s auf dem stick und starte das prog!

[edit] der mag _ _ d a t a _ _ nicht ?! [/edit]\n\n

<!--EDIT|Netspider|1084296525-->
perl -e "s;;Ronny Lindner;;m;(..).$;;$l=$1;s;n;;g;m;.{4}$;;$_=$l;$I=$&;m;^(.);;$_.='ts';$_.=$1;$_++;$_++;$_.=$I;print ucfirst;"
<< |< 1 2 3 >| >> 30 Einträge, 3 Seiten



View all threads created 2004-05-07 19:35.