[Gelöst] rename dateinamen

Du suchst ein Programm für einen bestimmten Zweck?
Antworten
Benutzeravatar
Rawbit
Beiträge: 633
Registriert: 24.12.2004 13:17:21
Lizenz eigener Beiträge: GNU Free Documentation License
Kontaktdaten:

[Gelöst] rename dateinamen

Beitrag von Rawbit » 11.05.2021 11:04:04

Hallo,

ich möchte mit rename viele Dateinamen ab der dritten Position bis zum Suffix .txt löschen.

Beispiel:

123xxxxxxx.txt soll 123.txt werden.

xxxxx hat eine unterschiedliche Anzahl von Stellen.


Wie kriege ich das hin?

Dank für Eure Hilfe!

Gruß

rawbit
Zuletzt geändert von Rawbit am 12.05.2021 10:01:28, insgesamt 1-mal geändert.
„Wenn alle Stricke reißen, dann hänge ich mich auf.“ Joachim Ringelnatz

Benutzeravatar
hikaru
Moderator
Beiträge: 11528
Registriert: 09.04.2008 12:48:59

Re: rename dateinamen

Beitrag von hikaru » 11.05.2021 11:17:46

Eine Möglichkeit wäre dieses Pattern:

Code: Alles auswählen

's/(...).+/$1.txt/'

Benutzeravatar
Rawbit
Beiträge: 633
Registriert: 24.12.2004 13:17:21
Lizenz eigener Beiträge: GNU Free Documentation License
Kontaktdaten:

Re: rename dateinamen

Beitrag von Rawbit » 11.05.2021 11:46:35

Hallo hikaru,


das wäre denn komplett


Code: Alles auswählen

rename 's/(...).+/$1.txt/'
oder?

(...) heißt wohl die ersten 3 Stellen.

.+/$1.txt/'

bedeuten was, bitte?

Wie ist da $1 definiert?

Leider zeigt der Befehl keine Wirkung.

Gruß

Rawbit
„Wenn alle Stricke reißen, dann hänge ich mich auf.“ Joachim Ringelnatz

Benutzeravatar
kalle123
Beiträge: 1415
Registriert: 28.03.2015 12:27:47
Wohnort: Mönchengladbach

Re: rename dateinamen

Beitrag von kalle123 » 11.05.2021 12:11:41

Thunar als Dateimanager verwendest du anscheinend nicht?

cu KH
Zuletzt geändert von kalle123 am 11.05.2021 12:32:14, insgesamt 1-mal geändert.
ASUS PRIME X370-A + AMD Ryzen 5-2600, GeForce GT1030, 16GB, DEBIAN Buster/Bullseye Xfce
ASUS P5QL + Intel Core2 Duo E6750, GeForce GT710, 8GB, DEBIAN Testing Xfce
Lenovo Thinkpad T450s, DEBIAN Buster Xfce

Benutzeravatar
hikaru
Moderator
Beiträge: 11528
Registriert: 09.04.2008 12:48:59

Re: rename dateinamen

Beitrag von hikaru » 11.05.2021 12:14:31

Rawbit hat geschrieben: ↑ zum Beitrag ↑
11.05.2021 11:46:35
das wäre denn komplett

Code: Alles auswählen

rename 's/(...).+/$1.txt/'
oder?
Es fehlt noch die Angabe der zu bearbeitenden Dateien. z.B.:

Code: Alles auswählen

rename 's/(...).+/$1.txt/' *.txt
Überprüfen kannst du was gemacht würde mit dem Schalter -n
Hier deine Beispieldatei und ein paar Dateien die aus einem früheren Test in meinem Ordner lagen:

Code: Alles auswählen

$ rename -n 's/(...).+/$1.txt/' *.txt
rename(123xxxxxxx.txt, 123.txt)
rename(ab c.txt, ab .txt)
rename(a.txt, a.t.txt)
rename(d ef.txt, d e.txt)
rename(g h i.txt, g h.txt)
Hier ist in der dritten Zeile gut zu sehen, dass meine Lösung zu unerwarteten Ergebnissen führt, wenn man sie mit Dateien mit kurzen Basisdateinamen füttert. Das lässt sich durch Anpassung des Eingabe-Patterns lösen, zeigt aber anschaulich, warum es beim Umgang mit Regex-Matching extrem wichtig ist, die Aufgabenstellung präzise zu formulieren. z.B.: Muss in deinem Fall mit kurzen Basisdateinamen gerechnet werden?
Rawbit hat geschrieben: ↑ zum Beitrag ↑
11.05.2021 11:46:35
(...) heißt wohl die ersten 3 Stellen.

.+/$1.txt/'

bedeuten was, bitte?

Wie ist da $1 definiert?
rename verwendet Perl-Regex. Ein Punkt ist ein beliebiges Zeichen. Runde Klammern im Such-Pattern definieren Variablen, auf welche im Ersetzungs-Pattern mit nummerierten Variablen ($N) zugegriffen werden kann.
Ich habe hier also die ersten drei Zeichen in eine Variable gesteckt und dann alle weiteren Zeichen (.+) einfach gematcht. In der Ersetzung gebe ich nur diese Variable aus ($1) und hänge ein ".txt" an. Es ist also streng genommen nicht das selbe ".txt" wie in der Eingabe.

JTH
Moderator
Beiträge: 1057
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: rename dateinamen

Beitrag von JTH » 11.05.2021 12:14:46

Rawbit hat geschrieben: ↑ zum Beitrag ↑
11.05.2021 11:46:35
Leider zeigt der Befehl keine Wirkung.
Du musst am Ende des Aufrufs auch noch die Dateien angeben, die zum Umbenennen überhaupt in Frage kommen. Hier etwa *.txt.

Benutzeravatar
Rawbit
Beiträge: 633
Registriert: 24.12.2004 13:17:21
Lizenz eigener Beiträge: GNU Free Documentation License
Kontaktdaten:

Re: rename dateinamen

Beitrag von Rawbit » 12.05.2021 10:00:51

Hallo,

danke für Eure Antworten.

Die Dateinamen wurden geändert, leider mit einigen unerwarteten Effekten.
Das beste Ergebnis hatte ich mit Kalle123's Hinweis mit Thunar & Massenumbennung.

Gruß

rawbit
„Wenn alle Stricke reißen, dann hänge ich mich auf.“ Joachim Ringelnatz

Benutzeravatar
kalle123
Beiträge: 1415
Registriert: 28.03.2015 12:27:47
Wohnort: Mönchengladbach

Re: rename dateinamen

Beitrag von kalle123 » 12.05.2021 11:27:25

Rawbit hat geschrieben: ↑ zum Beitrag ↑
12.05.2021 10:00:51
Das beste Ergebnis hatte ich mit Kalle123's Hinweis mit Thunar & Massenumbennung.
Danke für deine Rückmeldung. Das ist wirklich eine sehr mächtige Funktion :wink:

Gruß KH
ASUS PRIME X370-A + AMD Ryzen 5-2600, GeForce GT1030, 16GB, DEBIAN Buster/Bullseye Xfce
ASUS P5QL + Intel Core2 Duo E6750, GeForce GT710, 8GB, DEBIAN Testing Xfce
Lenovo Thinkpad T450s, DEBIAN Buster Xfce

schwedenmann
Beiträge: 4954
Registriert: 30.12.2004 15:31:07
Wohnort: Wegberg

Re: [Gelöst] rename dateinamen

Beitrag von schwedenmann » 13.05.2021 13:07:11

Hallo

Als nachtrag werfe ich noch pgrename und pyrename (beides GUI-Programme) in den Ring. isdt m.M. nach besser als regex auf der CLI, zumindest wenn man immr wieder unterschiedliche Lösungen für verschieden Einsatzzwecke benötigt.

mfg
schwedenmann

Antworten