test1.txt test2.txt test3.txtdie man mit einem Befehl in
test1.htm test2.htm test3.htmumbenennen möchte, dann geht das unter DosWindows mit
|
Unter Linux geht es mit
|
(mit util-linux rename).
Eine vorgeschlagene Lösung für eine csh ist aus einer FAQ:
|
Frage: Gibt es andere (einfachere, bessere) Varianten?
Antwort #1: Für diese und andere Operationen auf mehreren Files empfiehlt sich mmv. Das ist unabhängig von der Shell, forkt nicht, schleift nicht, braucht nicht programmiert zu werden und funktioniert auch rekursiv in und mit Verzeichnissen.
Für das angegeben Beispiel würde man einfach
|
schreiben (Achtung auf das Quoting!). Alleine die Zeit, die ich man sich da beim Tippen spart, schlägt jede Effizienzsteigerung der Implementierung.
mmv ist zwar für die meisten Distributionen verfügbar, man muss es aber auch ebensooft nachinstallieren, da es nicht zu den traditionellen "Standardtools" gehört.
Namensänderungen, die über einfache Stringersetzungen hinausgehen kann man zum Beispiel mittels
|
implementieren. Leider kann mmv über dieses Interface keine Filenamen, die Spaces enthalten, bearbeiten.
Antwort #2: Siehe UnixFAQ:2.6 ("How do I rename '*.foo' to '*.bar', or change file names to lowercase?").
Antwort #3: Deutlich einfachere gibt es wohl nicht, aber wesentlich performantere (~x40)(nur mit ShellBsh) und welche, die auch bei vorkommenden Zwischenraumzeichen funktionieren.
|
Bei der typischen SprachePerl-Installation ist /usr/bin/rename dabei, das beliebige Perlfragmente auf Filenamen anwendet.
Antwort #5:
Ich denke #1 und #2 sind am einfachsten zu handeln. #3 und #4 sind "spezial" Lösungen die auf Skriptsprachen basieren. Wenn man die Tools entsprechend installiert hat, sind eigentlich alle Lösungen gut. Für eine andere Lösung mit einem anderen Tool könnt ihr unter SCSH nachschauen. In diesem Fall wäre es ein:
|
Antwort #6:
Im dired Modus des LinuxWiki:emacs kann man das Verzeichnis "öffnen" und beliebige emacs-Operationen auf die Filenamen anwenden.
Links |