Dateien umbenennen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
oom
Beiträge: 56
Registriert: 17.08.2005 10:37:21

Dateien umbenennen

Beitrag von oom » 28.04.2011 15:19:41

Hallo,

vielleicht kann mir jemand von Euch etwas auf die Sprünge helfen.
Es geht darum Dateinamen zu ändern. (mit rename?)
Beispiel:

20110429 Das ist die Datei unter Windows.txt
... soll geändert werden in:
20110429 - Das ist die Datei unter Windows.txt

Alle Dateien haben das gleiche Format im Dateinamen.

Für Tips bin ich dankbar

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

Re: Dateien umbenennen

Beitrag von hikaru » 28.04.2011 15:32:30

Code: Alles auswählen

rename \  \ -\  *.txt
PS: Leerzeichen in Dateinamen sind immer eine schlechte Idee - auch 2011!

oom
Beiträge: 56
Registriert: 17.08.2005 10:37:21

Re: Dateien umbenennen

Beitrag von oom » 29.04.2011 11:32:34

... natürlich sind Leerzeichen eine schlechte Idee. Aber auch ein Windows-User hat seine Angewohnheiten. Gibst Du ihm einen Tip wie es besser gemacht werden kann, sagt er: "Du hast völlig Recht" ... Dann dreht er sich herum, geht und denkt sich: "What he said?"

mfg

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Dateien umbenennen

Beitrag von rendegast » 29.04.2011 12:57:14

hikaru hat geschrieben:

Code: Alles auswählen

rename \  \ -\  *.txt
funktioniert bei mir nicht richtig

Code: Alles auswählen

$ rename -n \  \ -\  2*

$ rename -n \ \ -\  2*
syntax error at (eval 1) line 2, at EOF
sondern

Code: Alles auswählen

$ rename -n 's/ / - /'  2*
20110011 dfwef sdfsf sdfadf renamed as 20110011 - dfwef sdfsf sdfadf
20110022 sdfsdfwef sdfsd sdfadf renamed as 20110022 - sdfsdfwef sdfsd sdfadf
20113322 swef sdfsd sdfadf renamed as 20113322 - swef sdfsd sdfadf
Etwas aufwändiger

Code: Alles auswählen

$ rename -n 's@(^[0-9]{8} )@$1- @' 2*
20110011 dfwef renamed as 20110011 - dfwef
20110022 sdfsdfwef renamed as 20110022 - sdfsdfwef
20113322 swef renamed as 20113322 - swef
Statt wie beim 'sed' müssen die Klammern nicht escaped werden "\(....\)",
und der Bezug auf die geklammerte Gruppe erfolgt mit "$1" statt "\1".

Das einzeln stehende "-" finde ich nicht so gut,
falsch gequotet leitet es ja Optionen ein oder steht für stdout.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

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

Re: Dateien umbenennen

Beitrag von hikaru » 29.04.2011 13:16:08

rendegast hat geschrieben:
hikaru hat geschrieben:

Code: Alles auswählen

rename \  \ -\  *.txt
funktioniert bei mir nicht richtig
Auf der Suse von gestern ging es. Unter Debian habe ich es nicht getestet.
rendegast hat geschrieben:Das einzeln stehende "-" finde ich nicht so gut,
falsch gequotet leitet es ja Optionen ein oder steht für stdout.
Stimmt.

Antworten