PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Stapelbearbeitung von Dateinamen



SchusterHannes
05.04.13, 21:53
Hallo,

ich muss ca. 30.000 Bildnamen bearbeiten bzw. umbenennen. Das heißt genau ich habe einen Dateinamen der sieht so aus:

Befestigung_Duebel_Nagelduebel_LSN_ZK-G89429.png

Das Ergebnis soll so aussehen:

G89429.png

meine Idee war das mit dem Befehl rename zu lösen...



rename -v 's/^\w/ ??? ' *.png


aber wie kann ich es realisieren, dass rename nur bis zum Minuszeichen abschneiden bzw. löschen soll.

Eine weitere Problematik habe ich noch, dass einige Bildnamen mit 1 2 3 4 Varianten vorhanden sind... und so vorhanden sind:

Befestigung_Duebel_Nagelduebel_LSN_SK_1-G82832.png
Befestigung_Duebel_Nagelduebel_LSN_SK_2-G82832.png
Befestigung_Duebel_Nagelduebel_LSN_SK_3-G82832.png

Wenn ich die Bilder umbenenne würden diese ja immer überschrieben werden. Oder kann man es angeben, dass bei den doppelten Bildern ein Präfix oder Suffix angeben werden kann.

Hat jemand eine Idee??

Vielen Dank im Voraus.

ThorstenHirsch
05.04.13, 22:03
ungetestet:

/.*(_\d+)?-([^.]+)\.png/$2$1.png/
Aber schau unbedingt nochmal nach, ob $1 auch $1 bleibt, wenn es nicht gefunden wird ...wobei das nicht schlimm ist, dadurch, dass $2$1 im replace direkt beieinander stehen.

SchusterHannes
05.04.13, 22:17
da bekomme ich folgende Fehlermeldung:



bash: Syntaxfehler beim unerwarteten Wort `('

Efraim
05.04.13, 22:33
Da ich mich mit rename nicht auskenne, würde ich mir ein Scriptchen schreiben:

#!/bin/bash
find -maxdepth 1 -type f -name "*.png" | while read f; do
n=${f##*-}
[ "$n" = "$f" ] && continue
c=1
while [ -e $n ]; do
n=$((c++))-${f##*-}
done
mv -v $f $n
done

SchusterHannes
05.04.13, 23:55
@Efraim

Vielen Dank!!!

Mit dem Script klappt das perfekt!!!

Efraim
06.04.13, 14:47
*zaunpfahlwink* :) : Trotzdem würde ich sehr gerne noch die fertige Rename-Lösung von ThorstenHirsch sehen, man lernt ja gerne dazu.

ThorstenHirsch
07.04.13, 12:35
Okidoki. :)
Ich hab's mit einer optionalen Gruppe leider nicht hinbekommen, daher 2 Aufrufe:

1.) mit _<Zahl>

rename -v 's/.*(_\d+)-(\D\d*)\.png/$2$1.png/' *png
Befestigung_Duebel_Nagelduebel_LSN_SK_1-G82832.png renamed as G82832_1.png
Befestigung_Duebel_Nagelduebel_LSN_SK_2-G82832.png renamed as G82832_2.png

2.) ohne _<Zahl>

rename -v 's/.*-(\D\d*)\.png/$1.png/' *png
Befestigung_Duebel_Nagelduebel_AllesDuebel_LSN_SK-G82832.png renamed as G82832.png

Efraim
07.04.13, 13:10
Vielen Dank. :cool:

So mag ich Forenbeiträge: Ein verständlich formuliertes Problem vom TE und funktionierende Examples als Antworten darunter. So lerne ich am schnellsten.

SchusterHannes
10.04.13, 10:12
Vielen Dank noch!!!

Beide Methoden passen...