bash-script: mv, ln

16/09/2009 - 03:02 von Andy Cende | Report spam
Hi Gents,

ich hab mit Hilfe einer Photo-Anwendung viele Dateien "umbenannt", die jetzt
irgendwie so aussehen:

img_2009-08-29_18:33:02.jpg_bild-0005.jpg-1200x1600.jpg

Das Zeug nach dem ersten ".jpg" ist redundant (aka Schwachsinn), làßt sich
mit KPhoto aber offenbar nicht mehr hinbiegen. Bevor ich mir ein extra
Progràmmel dafür bastle, kann mir sicher ein bash-Guru noch einen Tip
geben, wie man die Dateinamen mit Bordmitteln wieder entsprechend strippen
könnte??


Zweites Hoppala:
Einige der Dateien, die ich ursprünglich nur vom "Original"-Verzeichnis in
ein "Auswahl"-Unterverzeichnis symlinken wollte, sind als Kopie dort
gelandet (mea culpa). Seht ihr eine einfache Möglichkeit (bash-Script), die
Kopien zu löschen und mit einem Symlink auf die (gleichnamige)
Originaldatei (im Original-Verzeichnis) zu ersetzen?


So ganz unbeleckt in puncto bash bin ich zwar nicht mehr, aber *das* ist mir
zu hoch (hab' ich beschlossen)... ;)


TX, lg!
 

Lesen sie die antworten

#1 David Wührer
16/09/2009 - 09:26 | Warnen spam
Andy Cende wrote:

Hi Gents,

ich hab mit Hilfe einer Photo-Anwendung viele Dateien "umbenannt", die
jetzt irgendwie so aussehen:

img_2009-08-29_18:33:02.jpg_bild-0005.jpg-1200x1600.jpg

Das Zeug nach dem ersten ".jpg" ist redundant (aka Schwachsinn), làßt sich
mit KPhoto aber offenbar nicht mehr hinbiegen. Bevor ich mir ein extra
Progràmmel dafür bastle, kann mir sicher ein bash-Guru noch einen Tip
geben, wie man die Dateinamen mit Bordmitteln wieder entsprechend strippen
könnte??



for a in *; do b=$(echo $a|sed s/\.jpg_.*/.jpg/); mv -i $a $b; done

Zweites Hoppala:
Einige der Dateien, die ich ursprünglich nur vom "Original"-Verzeichnis in
ein "Auswahl"-Unterverzeichnis symlinken wollte, sind als Kopie dort
gelandet (mea culpa). Seht ihr eine einfache Möglichkeit (bash-Script),
die Kopien zu löschen und mit einem Symlink auf die (gleichnamige)
Originaldatei (im Original-Verzeichnis) zu ersetzen?



etwa so?

cd auswahlverzeichnis/
for a in *; do rm "$a"; ln -s "/pfad/zu/originalverzeichnis/$a" "$a"; done

Ähnliche fragen