[gelöst]Dateinamen umbauen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
halo44
Beiträge: 746
Registriert: 12.05.2015 15:19:13

[gelöst]Dateinamen umbauen

Beitrag von halo44 » 27.04.2020 13:23:18

Hallo zusammen,

ich möchte in einem Verzeichnis die Dateinamen umbauen, indem ich die ersten 3 Ziffern des Dateinamens am Ende, getrennt durch _, anhänge.

Die Dateinamen sind nach folgendem Muster aufgebaut: 001_20200326180536.jpg

Daraus soll entstehen: 001_20200326180536_001.jpg

Im Netz fand ich dieses Kommando

Code: Alles auswählen

rename 's/^(\d{3})\.jpg$/_$1\.jpg/' *
Leider macht dieses nicht, was ich möchte. Es setzt einen _ vor die letzten drei Ziffern des Dateinamens:

Code: Alles auswählen

001_20200326180_536.jpg
Ich bedanke mich für jeden Hinweis, der mir weiterhilft.

Gruss H.
Zuletzt geändert von halo44 am 30.04.2020 14:39:23, insgesamt 1-mal geändert.

Benutzeravatar
MSfree
Beiträge: 11604
Registriert: 25.09.2007 19:59:30

Re: Dateinamen umbauen

Beitrag von MSfree » 27.04.2020 13:53:30

Sowas?

Code: Alles auswählen

#!/bin/bash

echo $1 | awk '{
  split( $0, a, "_" )
  split( a[2], b, "." )
  print "mv "$0" "a[1]"_"b[1]"_"a[1]"."b[2]
}'
Als Skript speichern, z.B. als "umbenenn", dann chmod +x umbenenn.

Ausführung testen mit

Code: Alles auswählen

umbenenn 001_20200326180536.jpg
Wirklich ausführen mit

Code: Alles auswählen

umbenenn 001_20200326180536.jpg | /bin/bash

Benutzeravatar
Meillo
Moderator
Beiträge: 9225
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Dateinamen umbauen

Beitrag von Meillo » 27.04.2020 13:57:59

halo44 hat geschrieben: ↑ zum Beitrag ↑
27.04.2020 13:23:18
Die Dateinamen sind nach folgendem Muster aufgebaut: 001_20200326180536.jpg

Daraus soll entstehen: 001_20200326180536_001.jpg

Im Netz fand ich dieses Kommando

Code: Alles auswählen

rename 's/^(\d{3})\.jpg$/_$1\.jpg/' *
Probier's mal so:

Code: Alles auswählen

rename 's/^(\d{3})_(.+)\.jpg$/$1_$2_$1.jpg/' *

(Btw: Ich glaube nicht, dass genau das von dir gepostete rename-Kommando diese Ausgabe erzeugt die du gepostet hast. Bestimmt hattest du kein `^' drin. ;-) )
Use ed once in a while!

eggy
Beiträge: 3334
Registriert: 10.05.2008 11:23:50

Re: Dateinamen umbauen

Beitrag von eggy » 27.04.2020 14:19:11

Ich hätte bei sowas wahrscheinlich auch ne mv Liste erzeugt:

Code: Alles auswählen

 ls [0-9][0-9][0-9]*.jpg | sed 's_^\(...\)\(.*\)\.jpg_mv \0 \1\2\_\1\.jpg_' 
oder mvv benutzt - wobei ich da immer die Syntax vergesse und daher mit awk/sed ne mv Liste basteln bei mir viel schneller geht

Code: Alles auswählen

mmv -n '*_*.jpg' '#1_#2_#1.jpg'
grafisch wäre noch krename zu nennen, das kann viel und man sieht gleich was passieren wird

Leicht offtopic: Von "rename" hab ich leider schon x Implementierungen gesehen und wäre da vorsichtig, ob die Regexe da gleich sind, nach meiner Erfahrung rename!=rename ... das Debianische wird in den meisten Fällen wohl rename.ul aus util-linux sein, oder? Bei mir gibts auf dem System (sid) kein reines rename, Absicht oder nur nen fehlender alternatives-symlink? rename.ul ist aber da

Benutzeravatar
Meillo
Moderator
Beiträge: 9225
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Dateinamen umbauen

Beitrag von Meillo » 27.04.2020 15:05:06

Konkret gesprochen mache ich selber sowas immer mit `emv': http://www.i0i0.de/toolchest/emv

Das habe ich auf jedem meiner Rechner installiert. Das Umbenennen passiert dann im Editor, bei mir im vi. Ich kann automatisierte Bearbeitungen (s///) und interaktive Nacharbeit mischen, ausserdem sehe sofort wie das Ergebnis aussehen wird. Im Gegensatz zum Generieren von mv-Befehlen muss ich nicht auf Sonderzeichen und Whitespace achten.
Use ed once in a while!

tobo
Beiträge: 2336
Registriert: 10.12.2008 10:51:41

Re: Dateinamen umbauen

Beitrag von tobo » 27.04.2020 15:15:13

Das rename, um das es hier geht bzw. gehen sollte, ist /usr/bin/file-rename aus dem Paket rename. So einzustellen mit "update-alternatives --config rename". Ist ne Perl-Anwendung, vorhanden von Jessie bis sid. Um fehlerhafte Handhabung muss man sich keine große Sorgen machen, schließlich kann man den rename-Lauf mit dem rename-Schalter -n simulieren.

halo44
Beiträge: 746
Registriert: 12.05.2015 15:19:13

Re: Dateinamen umbauen

Beitrag von halo44 » 27.04.2020 15:53:07

Danke für die vielen guten Vorschläge. Am einfachsten schien mir übrigens das von @Meillo vorgeschlagene

Code: Alles auswählen

rename 's/^(\d{3})_(.+)\.jpg$/$1_$2_$1.jpg/' *
Dies macht tatsächlich das, was ich möchte.

@Meillo ich habe alle möglichen Versionen von rename versucht, dabei habe ich tatsächlich nicht die Version gepostet, die mir das falsche Ergebnis brachte. Gut aufgepasst :THX:

Gruss H.

eggy
Beiträge: 3334
Registriert: 10.05.2008 11:23:50

Re: Dateinamen umbauen

Beitrag von eggy » 27.04.2020 16:20:09

Meillo hat geschrieben: ↑ zum Beitrag ↑
27.04.2020 15:05:06
Konkret gesprochen mache ich selber sowas immer mit `emv': http://www.i0i0.de/toolchest/emv
@Meillo: Danke, das kannte ich noch nicht. vipe kennst Du sicher schon, oder? ist in den moreutils enthalten

Benutzeravatar
Meillo
Moderator
Beiträge: 9225
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Dateinamen umbauen

Beitrag von Meillo » 27.04.2020 16:45:55

eggy hat geschrieben: ↑ zum Beitrag ↑
27.04.2020 16:20:09
Meillo hat geschrieben: ↑ zum Beitrag ↑
27.04.2020 15:05:06
Konkret gesprochen mache ich selber sowas immer mit `emv': http://www.i0i0.de/toolchest/emv
@Meillo: Danke, das kannte ich noch nicht. vipe kennst Du sicher schon, oder? ist in den moreutils enthalten
Nee, kannte ich ich noch nicht.

Ueberhaupt habe ich die Debianmoreutils noch nicht installiert ... sollte ich aendern. Darunter finden sich ein paar nette Tools, u.a. `vidir', das die gleiche Funktionalitaet bietet wie `emv', und zudem auch Loeschen kann. Emv kann nicht loeschen ... ob das gut oder schlecht ist, muss man selber entscheiden. (Die beiden Tools sind von Joey Hess geschrieben, der mal ein DD war.)
Use ed once in a while!

Antworten