hi
ich benötige eine schleife, mit der ich aus den dateinamen:
crash_scan.jpg
test_scan.jpg
dummy_scan.jpg
... und noch 10000 weitere
_scan entfernen kann
ciao
schleife zum namenändern
Re: schleife zum namenändern
Hi
soll das für einen praktischen Zweck sein, oder nur so aus Spass um etwas zu programmieren?
Für letzteres hab ich im Augenblick nicht die Zeit das zu beantworten - um sowas aber ohne Programmierung zu erledigen gibt es das Programm mmv (2 * m)!
CU
Andi
soll das für einen praktischen Zweck sein, oder nur so aus Spass um etwas zu programmieren?
Für letzteres hab ich im Augenblick nicht die Zeit das zu beantworten - um sowas aber ohne Programmierung zu erledigen gibt es das Programm mmv (2 * m)!
CU
Andi
Re: schleife zum namenändern
Hi,
versuch mal folgendes:
<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
perl -e 'opendir(DIR, "path/to/dir");@inhalt = readdir(DIR);foreach (@inhalt) { $_ =~ s/_scan//g;}closedir(DIR);'
</font><hr></pre></blockquote>
cu
oliver
versuch mal folgendes:
<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
perl -e 'opendir(DIR, "path/to/dir");@inhalt = readdir(DIR);foreach (@inhalt) { $_ =~ s/_scan//g;}closedir(DIR);'
</font><hr></pre></blockquote>
cu
oliver
If you were supposed to understand it, we wouldn't call it code.
Re: schleife zum namenändern
Öh, oliver, benamst Dein perl-Skript auch die Dateien im Verzeichnis um? Ich sehe nur, dass Du die Dateinamen in ein Array einliest und dort aus jedem Namen das "_scan" entfernst, aber damit änderst Du doch nichts an den Namen auf der Platte - oder? Ich bastel erst seit kurzem ein bisschen mit perl und prinzipiell gibt's da nix, was es nicht gäbe, aber das wäre mir etwas zu heftig, wenn perl das tun würde.
Meine Lösung würde auf die Shell mit sed zurückgreifen:
<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">ls | sed 's/\(.*\)_scan\(\..*\)/mv & \1\2/' | sh</font><hr></pre></blockquote>
Beim "ls" könnte man noch ein "*.jpg" dransetzen, wennman auch noch andere Dateien im Verzeichnis hat. Der sed bastelt aus "xxx_scan.jpg" ein "mv xxx_scan.jpg xxx.jpg" und lässt seinen Output durch die folgende Shell ausführen.
Schleifen? Wozu Schleifen? <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle">
Jochen
Meine Lösung würde auf die Shell mit sed zurückgreifen:
<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">ls | sed 's/\(.*\)_scan\(\..*\)/mv & \1\2/' | sh</font><hr></pre></blockquote>
Beim "ls" könnte man noch ein "*.jpg" dransetzen, wennman auch noch andere Dateien im Verzeichnis hat. Der sed bastelt aus "xxx_scan.jpg" ein "mv xxx_scan.jpg xxx.jpg" und lässt seinen Output durch die folgende Shell ausführen.
Schleifen? Wozu Schleifen? <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle">
Jochen
Re: schleife zum namenändern
Hi Jochen,
hab' ich doch glatt was vergessen in der Eile ...
Was meinst du denn dazu ?
<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
perl -e 'opendir(DIR, "path/to/dir");@inhalt = readdir(DIR);foreach (@inhalt) { $_ =~ s/_scan//g; print DIR $_;}closedir(DIR);'
</font><hr></pre></blockquote>
Passt das jetzt ... ?
Ach ja, wo kann man denn so die wichtigsten Muster und Infos zu sed nachlesen. Und jetzt bitte nicht RTFM, ok.
cu
oliver
hab' ich doch glatt was vergessen in der Eile ...
Was meinst du denn dazu ?
<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
perl -e 'opendir(DIR, "path/to/dir");@inhalt = readdir(DIR);foreach (@inhalt) { $_ =~ s/_scan//g; print DIR $_;}closedir(DIR);'
</font><hr></pre></blockquote>
Passt das jetzt ... ?
Ach ja, wo kann man denn so die wichtigsten Muster und Infos zu sed nachlesen. Und jetzt bitte nicht RTFM, ok.
cu
oliver
If you were supposed to understand it, we wouldn't call it code.
Re: schleife zum namenändern
Hi,
lest einfach meinen Kurztip, da habe ich das ausschließlich mit Shell-Mitteln gelöst.
Gruß,
hjb
lest einfach meinen Kurztip, da habe ich das ausschließlich mit Shell-Mitteln gelöst.
Gruß,
hjb
Pro-Linux - warum durch Fenster steigen, wenn es eine Tür gibt?
Re: schleife zum namenändern
Hi,
auch wenn das mit der Shell besser geht, was ich gerne glaube, weiss ich trotzdem immer noch nicht, ob das mit der Perl Lösung nun richtig war, oder nicht. Wenn's nicht passt, bitte ich um Korrektur.
cu
oliver
auch wenn das mit der Shell besser geht, was ich gerne glaube, weiss ich trotzdem immer noch nicht, ob das mit der Perl Lösung nun richtig war, oder nicht. Wenn's nicht passt, bitte ich um Korrektur.
cu
oliver
If you were supposed to understand it, we wouldn't call it code.
Re: schleife zum namenändern
Also, nur noch mal so vorneweg: Ich bin <b>kein</b> Perlmeister.
Aber auch wenn Du jetzt in Deiner Lösung die neuen Dateinamen ohne "_scan" mittendrin über das print-Komnmando ausgibst, reicht das doch noch nicht, um die Dateien tatsächlich umzubenennen, oder?
Und mit dem Substitute (s/_scan//g) veränderst Du ja auch den originalen Dateinamen in den Array-Elementen - meine ich. Dann kann man auch kein mv/rename/link (oder wie das bei perl auch immer heisst) mehr machen, da man ja den alten Dateinamen nicht mehr parat hat.
Hm. Ich muss mir dazu noch was anlesen. Hast Du schon was zu dem Thema ausprobiert, Oliver?
Aber auch wenn Du jetzt in Deiner Lösung die neuen Dateinamen ohne "_scan" mittendrin über das print-Komnmando ausgibst, reicht das doch noch nicht, um die Dateien tatsächlich umzubenennen, oder?
Und mit dem Substitute (s/_scan//g) veränderst Du ja auch den originalen Dateinamen in den Array-Elementen - meine ich. Dann kann man auch kein mv/rename/link (oder wie das bei perl auch immer heisst) mehr machen, da man ja den alten Dateinamen nicht mehr parat hat.
Hm. Ich muss mir dazu noch was anlesen. Hast Du schon was zu dem Thema ausprobiert, Oliver?
Re: schleife zum namenändern
Hi Jochen,
ja, also ich muss mir das ganze nochmal anschauen. Hatte aber kein Linux parat, weswegen dass ein bisschen schwierig wurde. Aber Hilfe ist in Sicht, denn am Freitag ist SuSE 7.1 mit der Post eingetrudelt und wartet auf Installation auf meiner W2K Maschine <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">
Aber wir sollten diese Perl Diskussion beibehalten, denke ich. Sobald ich was weiss, meld ich mich wieder.
Bis dann.
cu
oliver
ja, also ich muss mir das ganze nochmal anschauen. Hatte aber kein Linux parat, weswegen dass ein bisschen schwierig wurde. Aber Hilfe ist in Sicht, denn am Freitag ist SuSE 7.1 mit der Post eingetrudelt und wartet auf Installation auf meiner W2K Maschine <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">
Aber wir sollten diese Perl Diskussion beibehalten, denke ich. Sobald ich was weiss, meld ich mich wieder.
Bis dann.
cu
oliver
Last edited by oli on 24. Feb 2001 21:11, edited 1 time in total.
If you were supposed to understand it, we wouldn't call it code.