Mehrfach umbennen in der Bash
Mehrfach umbennen in der Bash
Hallo,
ich möchte (rekursiv) alle Datein mit der Endung .txt in .doc umbenennen. Ich habe keine Idee, wie ich das auf der Bash machen kann.
Kann mir wer einen Tipp geben ?
ich möchte (rekursiv) alle Datein mit der Endung .txt in .doc umbenennen. Ich habe keine Idee, wie ich das auf der Bash machen kann.
Kann mir wer einen Tipp geben ?
Gibt sicher elegantere Varianten, aber
sollte funktionieren (ungetestet).
MfG, goeb
Edit: ups, du willst es rekursiv, dann mußt du entweder das Ganze in einem Skript "rekursieren" oder mit find hantieren.
Code: Alles auswählen
rename 's/^(.*)\.txt$/$1.doc/' *.txt
MfG, goeb
Edit: ups, du willst es rekursiv, dann mußt du entweder das Ganze in einem Skript "rekursieren" oder mit find hantieren.
Hallo Mightymod,
aus meiner Sicht sollte es mit einer Kombination von "find" und "rename" gehen.
http://www.linux-user.de/ausgabe/2000/0 ... efehl.html
Gruß fuzzy
aus meiner Sicht sollte es mit einer Kombination von "find" und "rename" gehen.
http://www.linux-user.de/ausgabe/2000/0 ... efehl.html
Gruß fuzzy
OT
Zum Testen solcher Sachen habe ich ein entsprechend gefülltes Verzeichnis. Finde ich besser, als 'ungetestet' hinzuschreiben, denn manchmal schleicht sich beim "On the fly-Basteln" doch ein Fehler ein. Nicht böse gemeint, ist mir nur schon öfter aufgefallen. Insbesondere "Anfänger" messen dem Hinweis 'ungetestet' oft nicht die ihm zustehende Bedeutung beisollte funktionieren (ungetestet)
cu
Wenn es ein Befehl gewesen wäre mit dem man etwas kaputt machen könnte hätte ich vorher ein bißchen rumprobiert, aber obiges rename ist harmlos. (Und wenn ich dann einmal anfange ein Skript zu basteln werd ich so schnell nicht wieder fertig ) Allerdings hätte ich das (ungetestet) auch einfach weglassen können, ich bin mir zu 100% sicher das der obige Befehl genau das macht was Mightymod möchte (nur nicht rekursiv).
MfG, goeb
MfG, goeb
Hi,
versuchs mal mit mmv (multiple move).
versuchs mal mit mmv (multiple move).
Roland
"Aber wenn du schon so unwissend bist, davon noch nicht gehört zu haben,
so will ich es doch als gut ansehen, daß du lieber einmal töricht fragst,
als weiterhin nichts von etwas zu wissen, das man doch wissen sollte."
aus "Die Edda des Snorri Sturluson", "Gylfis Täuschung"
"Aber wenn du schon so unwissend bist, davon noch nicht gehört zu haben,
so will ich es doch als gut ansehen, daß du lieber einmal töricht fragst,
als weiterhin nichts von etwas zu wissen, das man doch wissen sollte."
aus "Die Edda des Snorri Sturluson", "Gylfis Täuschung"
-
- Beiträge: 30
- Registriert: 27.11.2006 11:51:22
Code: Alles auswählen
for i in $(ls *.txt); do mv $i ${i%.txt}.doc; done
Cheers,
DS
Versuch malwithorwithoutaname hat geschrieben:Klappt aber leider nur, wenn alle Filenamen keine Leerezeichen enthalten.Code: Alles auswählen
for i in $(ls *.txt); do mv $i ${i%.txt}.doc; done
Cheers,
DS
Code: Alles auswählen
for i in $(ls -Q *.txt); do mv $i ${i%.txt}.doc; done
-
- Beiträge: 30
- Registriert: 27.11.2006 11:51:22
Lösung
So, ich hab's jetzt rausgefunden, leere oder Variablen mit Leerzeichen müssen in Doublequotes gesetzt werden, und zwar geht das einfach so:
Gute Seite mit Einsteigertips zum Thema "shell scripting": http://pegasus.rutgers.edu/~elflord/unix/bash-tute.html
Cheers,
DS
Code: Alles auswählen
for i in "$(ls *.txt)"; do mv $i ${i%.txt}.doc; done
Cheers,
DS