warum passiert das?
[something@localhost verz]$ mv *.mgk *.jpg ./
mv: »im000245.mgk« und »./im000245.mgk« sind die gleiche Datei
mv: »im000246.mgk« und »./im000246.mgk« sind die gleiche Datei
usw.
habe nach mogrify befehl aus *.jpg resize'te kleine .mgk gekriegt warum weiß ich nicht aber egal.
Wichtiger wäre wie kann man alle dateiendungen in andere umbenen ohne ein script dazu zu brauchen geht das überhaupt?
Dateiendung mit mv umbennen und *
-
- prolinux-forum-admin
- Posts: 1444
- Joined: 26. Jun 2004 21:18
- Contact:
Statt mv kannst Du für solche Zwecke rename verwenden:Das ersetzt in allen .mgk-dateien den Bestandteil ".mgk" durch ".jpg.
Unter DOS funktionierte das mit dem Sternchen deswegen, weil jedes Kommando dieses Ternchen selbst implementieren musste. Bei cd funktionierte es gar nicht, bei del so wie bei UNIX und bei ren wieder anders (in der Syntax so, wie Du es oben versucht hattest).
Unter UNIX wird das Sternchen durch die Shell ausgewertet, so dass diese Funktionalität allen Kommandos einheitlich zur Verfügung steht. Das bedeutet aber auch, dass solche Extrawürste wie beim ren unter UNIX so nicht funktionieren können.
Jochen
Code: Select all
rename .mgk .jpg *.mgk
Unter DOS funktionierte das mit dem Sternchen deswegen, weil jedes Kommando dieses Ternchen selbst implementieren musste. Bei cd funktionierte es gar nicht, bei del so wie bei UNIX und bei ren wieder anders (in der Syntax so, wie Du es oben versucht hattest).
Unter UNIX wird das Sternchen durch die Shell ausgewertet, so dass diese Funktionalität allen Kommandos einheitlich zur Verfügung steht. Das bedeutet aber auch, dass solche Extrawürste wie beim ren unter UNIX so nicht funktionieren können.
Jochen
Die grösste Lüge der EDV? "Mal eben..."
cool.jochen wrote:Statt mv kannst Du für solche Zwecke rename verwenden:Das ersetzt in allen .mgk-dateien den Bestandteil ".mgk" durch ".jpg.Code: Select all
rename .mgk .jpg *.mgk
Unter DOS funktionierte das mit dem Sternchen deswegen, weil jedes Kommando dieses Ternchen selbst implementieren musste. Bei cd funktionierte es gar nicht, bei del so wie bei UNIX und bei ren wieder anders (in der Syntax so, wie Du es oben versucht hattest).
Unter UNIX wird das Sternchen durch die Shell ausgewertet, so dass diese Funktionalität allen Kommandos einheitlich zur Verfügung steht. Das bedeutet aber auch, dass solche Extrawürste wie beim ren unter UNIX so nicht funktionieren können.
Jochen
das kannte ich noch nicht.
ich mache sowas so:
Code: Select all
for i in *.mgk;do mv $i $(echo $i|sed s/mgk/jpg/i);done
I came, I saw, I deleted all your files.
Allo wrote:Das "sed s/mgk/jpg/i" matcht aber nicht nur die Dateiendung, wenn im Dateinamen noch irgendwo anders die Zeichenkette "mgk" gefunden wird.jochen wrote:[...]
ich mache sowas so:
alloCode: Select all
for i in *.mgk;do mv $i $(echo $i | sed s/mgk/jpg/i);done
Wenn du _NUR_ die Dateiendung möchtest, kannst du auch den Befehl "basename" verwenden:Code: Select all
for DATEI in *.mgk; do mv "${DATEI}" "$(basename ${DATEI} .mgk).jpg"; done
It just works.
Allerdings wird dann im Dateinamen überall, wo ein beliebiges Zeichen gefolgt von "mgk" steht, die Zeichenfolge ",jpeg" eingesetzt:Allo wrote:wenn da kritisch ist, nehme ich einfachCode: Select all
s/.mgk$/.jpg/
bamgk.mgk -> b.jpg.mgk
Der Punkt steht bei den Regulären Ausdrücken nämlich für "genau ein beliebiges Zeichen (außer Newline)". So gilt dann auch "amgk" als Treffer. Das zweite ".mgk" würde nicht ersetzt werden, da das Substitute-Kommando des sed nach dem ersten Treffer aufhört, wenn nicht der g-Schalter (global) nach dem schliessenden / angehängt wird.
Wenn Du es so weiterhin machen willst, würde ich
Code: Select all
s/\.mgk$/.jpg/
Jochen
Die grösste Lüge der EDV? "Mal eben..."