Batch Dateiumbenennen
- crack
- Beiträge: 615
- Registriert: 19.08.2003 12:20:26
- Lizenz eigener Beiträge: GNU General Public License
- Wohnort: München
-
Kontaktdaten:
Batch Dateiumbenennen
Hi,
also ich habe 2 kleine Probleme:
1.) In einem Verzeichniss alle " " in "_" umzubenennen. Ich komme mit rename irgendwie nicht klar.
2.) In allen Dateien die einer bestimmen Form entsprechen, z.B. abcde*.abc, nach der 3ten Stelle ein 123 in den Dateinamen einfügen.
Da habe ich noch nichts gefunden.
Vielen Dank Benny
also ich habe 2 kleine Probleme:
1.) In einem Verzeichniss alle " " in "_" umzubenennen. Ich komme mit rename irgendwie nicht klar.
2.) In allen Dateien die einer bestimmen Form entsprechen, z.B. abcde*.abc, nach der 3ten Stelle ein 123 in den Dateinamen einfügen.
Da habe ich noch nichts gefunden.
Vielen Dank Benny
Schau Dir mal http://rename.berlios.de/ an. Dieses nette kleine Tool macht genau das. Du kannst mit wildcards eine Gruppe von files auswählen, und dann mit einer sed-ähnlichen suche+ersetze Option Textstellen in der selektierten Teilen ersetzen. Das geht wunderbar. Zu allem überfluß kann man die Filenamen auch komplett auf klein- oder Großbuchstaben umstellen.
Wenn Du dazu ein inoffiziellen Debianpaket haben willst, dann schicke mir einfach eine PM.
...ersetzt foo gegen bar für alle .png in aktuellen Verzeichnis.
Wenn Du dazu ein inoffiziellen Debianpaket haben willst, dann schicke mir einfach eine PM.
Code: Alles auswählen
rename -s/foo/bar/ *.png
Das alles geht viel einfacher mit dem Kommando mmv statt mv. Hierzu den Link:
http://www.linux-user.de/ausgabe/2001/0 ... umzug.html
Viel Spass
ggl larus
http://www.linux-user.de/ausgabe/2001/0 ... umzug.html
Viel Spass
ggl larus
- crack
- Beiträge: 615
- Registriert: 19.08.2003 12:20:26
- Lizenz eigener Beiträge: GNU General Public License
- Wohnort: München
-
Kontaktdaten:
@jd
Also ich habe das Tool runtergeladen und kopiliert aber es behauptet die Option "s" nicht zu kennen.
@larus
mmv hört sich soweit gut an aber ich packe es nciht zu ersetzen und wie ich einen String an einer bestimmen Stelle einfügen kann ist mir auch ein Rätzel. Davon sehe ich in der manpage leider nichts.
Benny
Also ich habe das Tool runtergeladen und kopiliert aber es behauptet die Option "s" nicht zu kennen.
@larus
mmv hört sich soweit gut an aber ich packe es nciht zu ersetzen und wie ich einen String an einer bestimmen Stelle einfügen kann ist mir auch ein Rätzel. Davon sehe ich in der manpage leider nichts.
Benny
hier wäre eine kleine Lösung für Problem 1 (bash):
und hier eine Lösung für Problem 2 (auch bash):
Du musst nur ins entsprechende Verzeichnis wechseln und die Muster anpassen (*)...
Sollte bei Problem 2, der Dateiname kürzer als 3 Zeichen sein, wird 123 einfach hinten dran gehängt.
cu,
bitbieger
Code: Alles auswählen
for a in *;do b=${a// /_}; if [ "$a" != "$b" ]; then mv "$a" $b; fi; done
Code: Alles auswählen
for a in *;do b="${a:0:3}123${a:3}"; mv "$a" "$b"; done
Sollte bei Problem 2, der Dateiname kürzer als 3 Zeichen sein, wird 123 einfach hinten dran gehängt.
cu,
bitbieger
- crack
- Beiträge: 615
- Registriert: 19.08.2003 12:20:26
- Lizenz eigener Beiträge: GNU General Public License
- Wohnort: München
-
Kontaktdaten:
Ja geil!!!
Sowas hatte ich mir gewünscht.
Daraus lernt man sogar noch was.
Danke bitbieger!!!
EDIT:
Kennt jemand ein guten Stringoperationen Tutorial für bash? Eine ausführliche Befehlsreferenz reicht mir auch. Auf sowas einfaches wie "${a:0:3}123${a:3}" kommt man halt nicht so schnell.
EDIT2:
Hier der Link zu einer super Befehlsreferenz:
http://www.tldp.org/LDP/abs/html/
Benny
Sowas hatte ich mir gewünscht.
Daraus lernt man sogar noch was.
Danke bitbieger!!!
EDIT:
Kennt jemand ein guten Stringoperationen Tutorial für bash? Eine ausführliche Befehlsreferenz reicht mir auch. Auf sowas einfaches wie "${a:0:3}123${a:3}" kommt man halt nicht so schnell.
EDIT2:
Hier der Link zu einer super Befehlsreferenz:
http://www.tldp.org/LDP/abs/html/
Benny
- crack
- Beiträge: 615
- Registriert: 19.08.2003 12:20:26
- Lizenz eigener Beiträge: GNU General Public License
- Wohnort: München
-
Kontaktdaten:
Ich habe ein neues Problem:
Wie benenne ich von "_" in " " um?
tut nicht das was ich will, es macht garnichts.
Nochwas:
bei sowas :
${a:0:12}
kann ich da auch den ganzen ausdruck umdrehen und von hinten sachen ersetzen?
Danke Benny
Wie benenne ich von "_" in " " um?
Code: Alles auswählen
for a in *;do b=${a//_/ }; if [ "$a" != "$b" ]; then mv "$a" $b; fi; done
Nochwas:
bei sowas :
${a:0:12}
kann ich da auch den ganzen ausdruck umdrehen und von hinten sachen ersetzen?
Danke Benny
Hi,crack hat geschrieben:Ich habe ein neues Problem:
Wie benenne ich von "_" in " " um?
das $b muss in diesem Fall in Anführungszeichen stehen. Die zukünftige Datei hat ja Leerzeichen
Code: Alles auswählen
for a in *;do b=${a//_/ }; if [ "$a" != "$b" ]; then mv "$a" "$b"; fi; done
Die Bash-Doku sagt zucrack hat geschrieben:Nochwas:
bei sowas :
${a:0:12}
kann ich da auch den ganzen ausdruck umdrehen und von hinten sachen ersetzen?
Code: Alles auswählen
${parameter:offset:length}
Du siehst also, Doku lesen zahlt sich aus
cu,
bitbieger