1
2
3
4
5
for i in $(ls *.png) ; do
${PrgDir}/convert "$i" "${i%.png}.tif" ; let Anz++
done
# Mein Fehler: hier soll *.tif stehen - Anzeige für neue Dateien
ls -m *.tif
QuoteThread als gelöst markieren: *grüner haken*
QuoteThread als nicht gelöst markieren: *Speichern Button*
2014-03-25T08:54:17 kezallBedauere, aber es ist mir nicht klar - wann eder Thread gelöscht oder aktiv ist.
2014-03-25T08:45:11 kezallHallo Perles,
kann mir jemand diese Bashzeilen in Perl umsetzen?
Code: (dl )1
2
3
4for i in $(ls *.png) ; do
${PrgDir}/convert "$i" "${i%.png}.tif" ; let Anz++
done
ls -m *.png
Danke.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
# PrgDir als Umgebungsvariable verwenden; Ansonsten als Perl-Variable definieren und verwenden my $cmd = "$ENV{PrgDir}/convert"; my $anzahl = 0; for my $file ( <*.png> ) { # ausgabe dateiname definieren ( my $newfile = $file ) =~ s/png$/tif/; # aufruf: convert inputfile outputfile; meldung bei fehler system( $cmd, $file, $newfile ) == 0 or warn "system($cmd, $file, $newfile) failed: $!\n"; $anzahl++; } # Umsetzung des ls -m *.png { local $, = ", "; print <*.png>; }
2014-03-25T10:18:34 kezallEs 'scheint' ich habe es kappppiert. Grüner Haken da - Thread aktin - sonst nicht aktiv. Uff f f. Mein Kopf ((;-x
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
#! /usr/bin/perl use strict; use warnings; # PrgDir als Umgebungsvariable verwenden; Ansonsten als Perl-Variable definieren und verwenden # Ersatzkommando /bin/mv my $cmd = "/bin/mv"; my $anzahl = 0; for my $file ( <*.png> ) { # ausgabe dateiname definieren ( my $newfile = $file ) =~ s/png$/tif/; # aufruf: convert inputfile outputfile; meldung bei fehler system( $cmd, $file, $newfile ) == 0 or warn "system($cmd, $file, $newfile) failed: $!\n"; $anzahl++; } # Umsetzung des ls -m *.png { local $, = ", "; print <*.png>; }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
### Kontrolle, was wir haben:
0 [11:33:23]host:~/testing/bla $ ll
total 24
-rw-r--r-- 1 linuxer users 533 Mar 25 11:33 a.pl
-rw-r--r-- 1 linuxer users 454 May 15 2010 hi16-action-make.png
-rw-r--r-- 1 linuxer users 425 May 15 2010 hi22-action-make.png
-rw-r--r-- 1 linuxer users 226 May 15 2010 vim16x16.png
-rw-r--r-- 1 linuxer users 347 May 15 2010 vim32x32.png
-rw-r--r-- 1 linuxer users 474 May 15 2010 vim48x48.png
### Ausführung des Codes
0 [11:33:26]host:~/testing/bla $ perl a.pl
### Kontrolle was rausgekommen ist:
0 [11:33:30]host:~/testing/bla $ ll
total 24
-rw-r--r-- 1 linuxer users 533 Mar 25 11:33 a.pl
-rw-r--r-- 1 linuxer users 454 May 15 2010 hi16-action-make.tif
-rw-r--r-- 1 linuxer users 425 May 15 2010 hi22-action-make.tif
-rw-r--r-- 1 linuxer users 226 May 15 2010 vim16x16.tif
-rw-r--r-- 1 linuxer users 347 May 15 2010 vim32x32.tif
-rw-r--r-- 1 linuxer users 474 May 15 2010 vim48x48.tif
0 [11:33:31]host:~/testing/bla $
perl -e 'use Image::Magick;'
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
#!/usr/bin/perl use warnings; use strict; use Image::Magick; my $anzahl = 0; for my $file ( <*.png> ) { # ausgabe dateiname definieren my $newfile = $file; $newfile =~ s/png$/tif/; # Konvertieren; meldung bei fehler my $image = Image::Magick->new(); my $c = $image->Read($file); if ($c) {warn "$c";} $c = $image->Write("tif:$newfile"); if ($c) {warn "$c";} $anzahl++; } # Umsetzung des ls -m *.png { local $, = ", "; print <*.png>; print "\n"; }
2014-03-25T10:50:30 kezallIn meinem Bash-Code habe ich bei ls nachgebessert, hier sol: *.tif stehen womit die neu erstellten Dateien angezeigt werde sollten und nicht die alten: *.png.
Denoch bringt der Perl-Code von Linuxer keine *.tif - nicht mal eine einzige - raus. Könntest Du mir bitte hiermit einwenig behilflich sein? Wäre Dir sehr verbunden.
for i in $(ls *.png) ...
for i in *.png ...
2014-03-25T23:20:02 betterworldWer schreibt denn so fürchterlichen Bash-Code überhaupt?
Code: (dl )for i in $(ls *.png) ...
Das ist ziemlich redundant und schlechter Stil. Man kann sich das ganze "ls" sparen:
Code: (dl )for i in *.png ...
Das tut dasselbe. Dabei spart man sich noch einen ganzen Haufen von Problemen, weil der erste Code nämlich komplett austicken würde, wenn die Dateinamen mal bestimmte Sonderzeichen enthalten (Whitespace, Wildcards, je nach Locale auch noch Umlaute o.ä.)
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
#! /usr/bin/perl
# mkocr.pl
use strict;
use warnings;
# use English;
use Image::Magick;
my $anzahl = 0;
# my $ENV = "/usr/bin";
# display aus Perl-Forum 19.3.2014 von GwenDragon. Bei Ubu 12.04.4 LTS zwingend
# dazu gsfonts-x11, gsfonts-other - offenbart sich erst mit Synaptic!
sub display {
my $file_name = shift;
# Betrachter von ImageMagicks display - ist bei Ubu 12.04.4 LTS.
if (-e '/usr/bin/display') { system('/usr/bin/display',$file_name); }
# Betrachter von X-Server
elsif (-e '/usr/bin/xview') { system('/usr/bin/xview',$file_name); }
}
# check of DIRs - Verzeichnisse
if ( ! "~/Dokus" ) { system( "mkdir ~/Dokus" ); };
if ( ! "~/Sca" ) { system( "mkdir ~/Sca" ); };
# in Sca auf *.png testen - if NOT exit
if (! '~/Sca/*.png') {
print "Keine *.png vorhanden - ENDE.\n";
exit();
};
# Perl-Forum von Linuxer 25.03.2014
my $eintrag;
my $cmd = "/user/bin/convert";
for my $file ( <~/Sca/*.png> ) {
# ausgabe dateiname definieren
( my $newfile = $file ) =~ s/png$/tif/;
# opendir(DIR,"Sca");
# aufruf: convert inputfile outputfile; meldung bei fehler
if (system( $cmd, $file, $newfile ) == 0)
{
$anzahl++;
}
else
{
warn "system( $cmd, $file, $newfile ) failed: $! \n";
}
}
# Dateienanzeige. Umsetzung des ls -m *.tif ?? system(`ls ~/Sca/*.tif`)
{
local $, = ", ";
print <*.tif>;
}
# Gegencheck mit oeffnen in DIR wechselt rein und auflisten.
print " -- -- -- -- --\n";
opendir(DIR,"Sca");
while($eintrag=readdir(DIR)) {
print"$eintrag \n";
}
closedir(DIR);
1
2
3
4
5
# Dateienanzeige listet nicht. Umsetzung des ls -m *.tif
{
local $, = ", ";
print <*.tif>;
}
system(`ls ~/Sca/*.tif`);
system(`ls ~/Sca/*.tif`);
@dateien = qx("ls ~/Sca/*.tif");
@dateien = qx("ls ~/Sca/*.tif");