PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bildersammmlung .JPG in .jpg konvertieren


schalala
2014-02-04, 15:53:15
Wie kann ich eine Bildersammlung, in der alle Bilder die Dateiendung .JPG haben, in .jpg umbenennen?

Habs geschafft. Das folgende Skript funktioniert!

#!/bin/bash
files=$(ls *.JPG);
for i in $files;
do
name=$(echo $i | cut -f1 -d".");
mv $i "$name".jpg ;
done

Tyrann
2014-02-04, 16:11:03
willst du nun konvertieren oder umbennen?

Ganon
2014-02-04, 16:12:23
Das erste Skript kodiert deine Bilder alle neu, mit einer Qualität von 85% und einer Auflösung von 1024x1024. Das willst du wahrscheinlich nicht.

Das zweite Skript sucht alle Dateien mit der Endung JPG und benennt diese um in jpg. Das entspricht dem was du in deiner Frage stellst ;)

Aber ich weiß beim zweiten Skript gerade nicht, ob dieser mit Leerzeichen im Dateinamen klar kommt. Das musst du einfach mal testen.

schalala
2014-02-04, 16:14:53
Ich möchte natürlich NICHT konvertieren. Das erste Skript (das mitlerweile wieder gelöscht ist) sollte auch nur eine Arbeitsgrundlage, darstellen, weil für mich verständlich aufgebaut.

Das zweite scheint zu funktionieren. Ich verstehe die Syntax aber nicht vollständig. Könnt ihr mir das Skript erklären wenn es nicht zuviel Umstände macht? Ich fühl mich immer besser als Fahrer denn als Beifahrer.

Lokadamus
2014-02-04, 16:29:42
#!/bin/bash
files=$(ls *.JPG);
for i in $files;
do
name=$(echo $i | cut -f1 -d".");
mv $i "$name".jpg ;
done#!/bin/bash <-- mit welcher Shell wir das Skript ausführen wollen
files=$(ls *.JPG); <-- Wir erzeugen eine Variable namens "files" und sie soll den Inhalt "ls *.JPG" haben. Hierbei ist wichtig, dass durch das $() kein fester Wert, sondern ein noch zu erzeugender Wert durch einen externen Befehl (ls ...) genommen werden soll.

for i in $files; <--- For Schleife (wörtlich gesagt "rattere jede Zeile in files so lange runter bis zum Ende)
do <-- For Schleife, mach so lange bis Bedingung erfüllt ist
name=$(echo $i | cut -f1 -d"."); <--- kürzt, wenn ich es richtig verstehe, das .JPG aus der Liste in i (aus der For Schleife am Anfang) und pack es in Name
mv $i "$name".jpg ; <-- "Verschiebe" i (müsste in diesem Moment ohne Dateiendung sein) nach name.jpg, womit das Ziel erreicht ist.
done <-- Ende

Das dürfte auf die schnelle eine kurze Erklärung für das Skript sein. Bei Fehlern oder besserer Erklärung bitte laut geben.

Spontan hätte ich gesagt, ein "mv *.JPG *.jpg" hätte gereicht, aber sicher bin ich mir gerade nicht. Ich würde es mit 2 oder 3 Dateien vorher testen.

PHuV
2014-02-04, 17:30:13
Bei Bash kannst Du Inline-Befehle für die String-Verarbeitung verwenden, daß geht dann viel schneller als ein cut mit FORK. Und für Dateinamen mit Leerzeichen besser ${var} verwenden. Jedoch kann es sein, daß manchen trotzdem ein "" brauchen, deshalb vorher ausprobieren.

#!/bin/bash

for i in `ls *.JPG`;
do
# mach mal den hinteren Teil wech
name=${i%".JPG"}
mv ${i} ${name}.jpg ;
done

So was kurzes mache ich nicht mal über Script, sondern gleich direkt auf der Kommandozeile.
for i in `ls *.JPG`;do name=${i%".JPG"}; mv ${i} ${name}.jpg ; done

Update: Fehler korrigiert.

schalala
2014-02-04, 17:32:20
#!/bin/bash <-- mit welcher Shell wir das Skript ausführen wollen
files=$(ls *.JPG); <-- Wir erzeugen eine Variable namens "files" und sie soll den Inhalt "ls *.JPG" haben. Hierbei ist wichtig, dass durch das $() kein fester Wert, sondern ein noch zu erzeugender Wert durch einen externen Befehl (ls ...) genommen werden soll.

for i in $files; <--- For Schleife (wörtlich gesagt "rattere jede Zeile in files so lange runter bis zum Ende)
do <-- For Schleife, mach so lange bis Bedingung erfüllt ist
name=$(echo $i | cut -f1 -d"."); <--- kürzt, wenn ich es richtig verstehe, das .JPG aus der Liste in i (aus der For Schleife am Anfang) und pack es in Name
mv $i "$name".jpg ; <-- "Verschiebe" i (müsste in diesem Moment ohne Dateiendung sein) nach name.jpg, womit das Ziel erreicht ist.
done <-- Ende

Das dürfte auf die schnelle eine kurze Erklärung für das Skript sein. Bei Fehlern oder besserer Erklärung bitte laut geben.

Spontan hätte ich gesagt, ein "mv *.JPG *.jpg" hätte gereicht, aber sicher bin ich mir gerade nicht. Ich würde es mit 2 oder 3 Dateien vorher testen.

Danke,
mv *.JPG *.jpg funktioniert nicht. Das hatte ich natürlich zuvor ausprobiert.

schalala
2014-02-04, 17:33:36
[QUOTE=PHuV;10097809]Bei Bash kannst Du Inline-Befehle für die String-Verarbeitung verwenden, daß geht dann viel schneller als ein cut mit FORK. Und für Dateinamen mit Leerzeichen besser ${var} verwenden. Jedoch kann es sein, daß manchen trotzdem ein "" brauchen, deshalb vorher ausprobieren.

#!/bin/bash

for i in `ls *.JPG`;
do
# mach mal den hinteren Teil wech
name=${i%".JPG"}
mv ${i} ${name}.jpg ;
done

Hi,
das Skript sieht schlichter aus.
Die Syntax ist knapper, aber nicht leichter zu verstehen.

Ich werde es hier im Topic lassen und bei Bedarf einfach ausprobieren.
Momentan sehe ich keinen Vorteil zu der oben genannten Lösung. Sonst würde ich das Bestehende verwerfen und deine Lösung einsetzen.

schalala
2014-02-04, 17:39:04
for i in `ls *.JPG`;do name=${i%".JPG"}; mv ${i} ${name}.jpg ; done

Sehr geil!

PHuV
2014-02-04, 17:45:45
Vorsicht, ist noch ein Fehler drin, habe ich korrigiert, siehe Anfangspost.

Der Trick liegt darin, daß Du per Inline-Kommando eine Substring-Funktion verwendest. # ist der Dateianfang, % ist das Dateiende. Sprich mit ${var#.JPG} würdest Du am Wortanfang den String ausschneiden, was hier ja nicht sinnvoll ist, und eben ${var%.JPG} das Dateiende.

Man mal einen Vergleich mit Deinem cut, und dann mit dem Inline. Du wirst sehen, das geht viieel schneller. ;)
Danke,
mv *.JPG *.jpg funktioniert nicht. Das hatte ich natürlich zuvor ausprobiert.
Das geht definitiv nicht, weil das mv-Kommando keine mehreren Dateien als Argumente einliest, das muß man über ls machen.

schalala
2014-02-04, 18:08:45
Vorsicht, ist noch ein Fehler drin, habe ich korrigiert, siehe Anfangspost.

Der Trick liegt darin, daß Du per Inline-Kommando eine Substring-Funktion verwendest. # ist der Dateianfang, % ist das Dateiende. Sprich mit ${var#.JPG} würdest Du am Wortanfang den String ausschneiden, was hier ja nicht sinnvoll ist, und eben ${var%.JPG} das Dateiende.

Man mal einen Vergleich mit Deinem cut, und dann mit dem Inline. Du wirst sehen, das geht viieel schneller. ;)

Das geht definitiv nicht, weil das mv-Kommando keine mehreren Dateien als Argumente einliest, das muß man über ls machen.

Ich habs auch in meinen Zitaten übernommen.
Schau mal bitte wegen Fehlern drüber

schalala
2014-02-04, 18:12:08
Man mal einen Vergleich mit Deinem cut, und dann mit dem Inline. Du wirst sehen, das geht viieel schneller. ;)


Klingt gut. Das wäre bei dem was ich vorhabe (mit Darktable Output von 1000 und mehr Dateien) schon der Kracher wenns richtig nach vorne geht :)

PHuV
2014-02-04, 18:12:54
Ich habs auch in meinen Zitaten übernommen.
Schau mal bitte wegen Fehlern drüber
Paßt. Gibts noch ein Verständnisproblem, oder ist nun alles klar?

Gast
2014-02-04, 18:36:11
for i in `ls *.JPG`;do name=${i%".JPG"}; mv ${i} ${name}.jpg ; done



Das sollte man so nicht machen. Das gibt zB Ärger mit Leerzeichen.
Besser:

for i in *.JPG; do # ohne ls!
echo i
done



Das Problem kann man auch mit "find" und den Parameter "-exec" als Einzeller einfacher lösen.

Gast
2014-02-04, 21:23:17
for i in `ls *.JPG`;do name=${i%".JPG"}; mv ${i} ${name}.jpg ; done

erst über unnötige Prozesse meckern und dann ls und eine vollkommen unnötige variable benutzen :ugly:
lieber so:
for i in *.JPG; do mv "$i" "${i%.JPG}.jpg"; done

PHuV
2014-02-04, 23:16:27
Stimmt, so kann man es auch machen. Wieder was in Erinnerung gerufen, danke. Ich verwende oft beim in-Argument mehrere Sachen, so daß ich das in der Form kaum anwende.

Mit der Variable hast Du auch recht, aber ich wollte es erst mal verständlich machen. Zudem verwende ich immer lieber explizit Variablen, da man hier im Script diese dann noch beliebig oft weiterverwenden kann. Für so einen Einzeiler hast Du natürlich recht, ist sie überflüssig.

Nobody is perfect, oder? Man kann immer wieder noch was tunen. ;)

PHuV
2014-02-04, 23:24:24
Das sollte man so nicht machen. Das gibt zB Ärger mit Leerzeichen.
Jup, hast recht, besser hier "" verwenden.
Das Problem kann man auch mit "find" und den Parameter "-exec" als Einzeller einfacher lösen.
Mach mal bitte ein Beispiel. Denk daran, daß Du das Umwandeln und das Move machen mußt, da fällt mir auf die Schnelle nicht ein, wie das mit -exec gehen soll. So gehts leider nicht:
find . -name "*.JPG" -print -exec mv "{}" "{%.JPG}.jpg" \;
Zudem würde ich hier eher mit xargs arbeiten, geht auch wieder schneller als -exec, siehe hier, unten (http://javarevisited.blogspot.de/2012/06/10-xargs-command-example-in-linux-unix.html).

Das geht dann in perl bestimmt besser und schneller. :freak:

Update: Cool, was man im Netz so alles findet, hier mal eine flexible Lösung, wenn man mehr Dateien zum Umbenennen hat:
http://ppfeufer.de/bash-dateiendungen-aendern/
#!/bin/bash
# Script: chext (change extensions)
# Usage: chext old new
echo Aendere Endungen von $1 nach $2

for i in *.$1; do
echo "$i => ${i%$1}$2";
mv "$i" "${i%$1}$2";
done


Meine Lösung wäre hier, gleich per typeset die Zeichen in Kleinbuchstaben umzuwandeln:
#!/bin/bash
echo Aendere Endungen Grossschrift nach Kleinschrift von $1 nach klein durch ${1,,}
typeset -l klein=`echo ${1}`

for i in *.$1; do
echo "$i => ${i%$1}${klein}";
mv "$i" "${i%$1}${klein}";
done
Oder Umwandlung über Inline Bash ab 4.0 ${1,,} macht klein, ${1^^} macht gross.
#!/bin/bash
echo Aendere Endungen Grossschrift nach Kleinschrift von $1 nach klein durch ${1,,}

for i in *.$1; do
echo "$i => ${i%$1}${1,,}";
mv "$i" "${i%$1}${1,,}";
done

Auch eine geile Lösung:

http://computer.wer-weiss-was.de/linux/mehrere-jpg-dateien-in-jpg-umbenennen
falls du auf deinem nicht näher benannten Linux ein rename hast:
rename 's/\.JPG$/\.jpg/' *JPG
Ich habe jedoch bisher auf keinem Unix ein rename gesehen. :confused:

Wie man sieht, viele Wege führen nach Rom.

schalala
2014-02-05, 11:39:49
lieber so:
for i in *.JPG; do mv "$i" "${i%.JPG}.jpg"; done

Ich habe gesehen, dass es auch angepinnt ist unter den nützlichen Kommandos.
Da gehört es auch hin! Danke :smile:

Lokadamus
2014-02-06, 13:01:04
Auch eine geile Lösung:

http://computer.wer-weiss-was.de/linux/mehrere-jpg-dateien-in-jpg-umbenennen

Ich habe jedoch bisher auf keinem Unix ein rename gesehen. :confused:

Wie man sieht, viele Wege führen nach Rom.Das Ding sieht eher nach sed. :confused:

ENKORE
2014-02-06, 16:41:17
zsh kann das selbstverständlich auch sehr schön

zmv -W '**/*.JPG' '**/*.jpg'

Pro: Macht bei doppelten Namen nichts kaputt.

Das Ding sieht eher nach sed. :confused:

Rename gehört zu irgendeinem util-Package. Ist nicht standadisiert und hat auch keinen Fehlerschutz drin.

Von den Lösungen rename, for-Schleife und zmv ist zmv IMHO die beste, da es die einzige mit effektiven Fehlerschutz ist... und man zsh-globs nutzen kann :D

Birdman
2014-02-06, 20:52:01
pft, unter Windows wäre das soviel einfacher gewesen :D

mv *.JPG *.jpg

sei laut
2014-02-07, 14:09:29
pft, unter Windows wäre das soviel einfacher gewesen :D

mv *.JPG *.jpg
Sicher? Für Windows ist blubb.JPG und blubb.jpg die gleiche Datei. Aber vielleicht meckert da auch nur der Explorer.

Lokadamus
2014-02-07, 15:36:36
pft, unter Windows wäre das soviel einfacher gewesen :D

mv *.JPG *.jpgNö, weil:
1.) mv unter Windows move heißt
2.) ren bzw. rename hier gehen
3.) Wie sei laut schon gesagt hat, Windows nicht zwischen Groß- und Kleinschreibung unterscheidet.
Schon einmal unter Linux 2 Ordner mit gleichen Namen, aber unterschiedlicher Groß- und Kleinschreibung auf NTFS geschrieben?
In den unteren Ordner kommst du von Windows nicht rein, du wirst immer in den alphabetisch oberen Ordner aus Sicht von Windows umgelenkt.

clm[k1]
2014-02-07, 15:56:10
Da ich hier immer nur for-schleifen sehe, möchte ich mal darauf hinweisen, dass das bei Pfaden/Dateinamen mit Leerzeichen im Namen schnell problematisch werden kann.

Zuverlässiger ist da IMO folgendes Konstrukt:

while read g
do
echo "ich mach jetzt was..."
done < <(ls -1 /path/to/files);

Gast
2014-02-07, 18:02:18
;10101346']Da ich hier immer nur for-schleifen sehe, möchte ich mal darauf hinweisen, dass das bei Pfaden/Dateinamen mit Leerzeichen im Namen schnell problematisch werden kann.
Wenn man es richtig macht (wildcard expansion der shell statt "ls" und quotes um die verwendeten variablen) kann eigentlich nichts passieren. Und für die ganz heiklen Fälle gibt es immer noch die ultimative "find -print0 | xargs -0"-Kombination.

Gast
2014-02-07, 18:05:38
Von den Lösungen rename, for-Schleife und zmv ist zmv IMHO die beste, da es die einzige mit effektiven Fehlerschutz ist...
Wenn du unbeabsichtigtes Überschreiben verhindern willst, kannst du auch einfach in der for-Schliefe mv mit dem Parameter "-i" verwenden. Das klappt im Gegensatz zu deinem Vorschlag dann sogar komplett unabhängig von der verwendeten Shell.

PHuV
2014-02-12, 11:11:15
Und für die ganz heiklen Fälle gibt es immer noch die ultimative "find -print0 | xargs -0"-Kombination.
Dann macht doch bitte dafür mal ein Beispiel, wie dann das Umbenennen auf diese Weise mit find und xargs funktionieren soll. Ich bekomme hier nix gescheites hin, weil man hier mit 2 Parametern (alter und neuer Dateiname) arbeiten muß.

Gast
2014-02-12, 23:07:08
Dann macht doch bitte dafür mal ein Beispiel, wie dann das Umbenennen auf diese Weise mit find und xargs funktionieren soll. Ich bekomme hier nix gescheites hin, weil man hier mit 2 Parametern (alter und neuer Dateiname) arbeiten muß.
Die alte Dateiendung bekomme ich so spontan nicht weg, aber im Prinzip geht das so in der Art:
find . -type f -name "*.JPG" -print0 | xargs -0 -I xx mv xx xx.jpg

PHuV
2014-02-12, 23:37:12
Na eben nicht, weil man per exec {} nur eine Argumentliste übergeben kann, aber keine 2., auch per xargs -I nicht ;) da bekommt man das Dateiende nicht weg, und das ist ja das wichtigste Problem hier. Wir brauchen aber für das Umbenennen 2 Argumente, die Liste der alten Dateinamen, und Übergaben an den neuen Dateinamen, oder das Abschneiden des Dateiendes am ersten Argument mit Übergabe an das 2., ein zusätzliches Pipe klappt bei xargs nicht.

Ich habs ja bereits mehrfach erfolglos probiert, siehe das erste Konstrukt hier, (http://www.forum-3dcenter.org/vbulletin/showpost.php?p=10098286&postcount=17) das funktioniert so eben nicht, auch nicht mit xargs.

Das Prinzip ist schon klar, aber es klappt so nicht. Deshalb will ich erst eine funktionierende Lösung sehen, sonst behaupte ich mal frech, das gestellte Problem geht eben nicht mit find und exec/xargs.

nalye
2014-02-12, 23:48:11
Edith meint: Ich habe nicht alles gelesen hier, vieles ist wohl doppelt

Oder - falls alles klein geschrieben werden soll - rename
rename 'y/A-Z/a-z/' *

Ginge auch noch mit
"${y,,}"
in dem ganzen i-Gewusel-Beispielen

//Edit: There is no kill like overkill....

tr:
tr a-z A-Z

awk:
awk '{ print tolower($0) }' $file

sed:
find . -name '*.*' -exec sh -c ' a=$(echo {} | sed -r s/([^.]*)\$/\L\1/"); [ "$a" != "{}" ] && mv "{}" "$a" ' \;

rename mit RegExp:
find . -depth -exec rename 's/(.*)\/([^\/]*)/$1\/\L$2/' {} \;

Weil ich es kann mit xargs:
find . -type f -print0 | xargs -0 rename 'y/A-Z/a-z/'

Birdman
2014-02-13, 01:13:56
Nö, weil:
1.) mv unter Windows move heißt
2.) ren bzw. rename hier gehen
3.) Wie sei laut schon gesagt hat, Windows nicht zwischen Groß- und Kleinschreibung unterscheidet.
Schon einmal unter Linux 2 Ordner mit gleichen Namen, aber unterschiedlicher Groß- und Kleinschreibung auf NTFS geschrieben?
In den unteren Ordner kommst du von Windows nicht rein, du wirst immer in den alphabetisch oberen Ordner aus Sicht von Windows umgelenkt.

Klar doch geht das, mein einziger! Fehler war, dass ich mv anstelle von ren geschrieben habe - was auf ein Brainlag zurückzuführen ist.

Gross/Kleinschreibung kennt Windows sehr wohl, nur dem FS ist es egal. Nichtsdestotrotz kann man easy ein xyz.TXT in xyz.txt umbennen, oder eben *.MP3 in *.mp3

PHuV
2014-02-13, 12:36:16
Oder - falls alles klein geschrieben werden soll - rename
rename 'y/A-Z/a-z/' *
Deine Lösungen haben alle den Nachteil, wie Du es sagst, daß alles in klein umgewandelt wird. Das ist ja trivial. Es geht darum, nur das Dateiende umzuwandleln, und das klappt so mit find und exec/xargs (ohne rename) nicht.

Wo findet man im Standard-Unix und Linux ein rename? Sieh an, unter den meisten Linux-Distributionen gibts das ja mittlerweile :eek: (aber nicht bei Citrix Xen und auch nicht bei den aktuellen Cygwin-Tools :rolleyes:)

Mit rename unter Linux geht es einfach so:
rename 's/.JPG/.jpg/' *

Eidolon
2014-02-13, 17:47:07
Mit rename unter Linux geht es einfach so:
rename 's/.JPG/.jpg/' *

Sieht aus wie eine sed Befehlszeile, finde ich.

PHuV
2014-02-13, 18:10:58
Ist es vermutlich auch.

ENKORE
2014-02-14, 19:18:59
Schon einmal unter Linux 2 Ordner mit gleichen Namen, aber unterschiedlicher Groß- und Kleinschreibung auf NTFS geschrieben?
In den unteren Ordner kommst du von Windows nicht rein, du wirst immer in den alphabetisch oberen Ordner aus Sicht von Windows umgelenkt.

Ein besonderer Spaß ist es auch, wenn man von einem anderen OS her auf einem USB-Stick Dateien hat mit Zeichen im Dateinamen, die Windows nicht mag. Wie \ < > | " ! usw.

Richtig skurril wird es aber, wenn man eine Ordnerstruktur wie diese hier hat (nur \ mit leerzeichen rum = Unterordner:

E:\ foo \ bar \ baz
E:\ foo\bar\

Selbst wenn vom anderen OS in foo\bar Daten geschrieben wurden, kommt man unter Windows nicht dran, da alle Programme auf foo \ bar zugreifen :D

Lokadamus
2014-02-14, 20:25:00
Selbst wenn vom anderen OS in foo\bar Daten geschrieben wurden, kommt man unter Windows nicht dran, da alle Programme auf foo \ bar zugreifen :DEigentlich sollten diese Ordner mit Anführungszeichen zugreifbar sein, aber Sonderzeichen wie ? machen Trouble. Ich hab selber noch so einen Ordner, wo ich nichts löschen kann wegen dem Fragezeichen.
Ich bin zu faul es unter FreeBSD zu versuchen, da NTFS einfach zu verdreht ist. Es besteht leider eine gewisse Chance, dass einfache Operationen unter NTFS schief gehen, egal ob Linux oder *BSD verwendet wird. In wie weit Unix dies fehlerfrei beherrschen, will ich nicht raten. Wahrscheinlich ist der Zugriff unter Linux momentan am besten und selbst hier gibt es Probleme. ;(

nalye
2014-02-15, 01:02:42
Eigentlich sollten diese Ordner mit Anführungszeichen zugreifbar sein, aber Sonderzeichen wie ? machen Trouble. Ich hab selber noch so einen Ordner, wo ich nichts löschen kann wegen dem Fragezeichen.
rm -- '-?dateiname'
-- stoppt das Parsing

Gast
2014-02-15, 08:04:06
Es ist doch immer wieder erfrischend zu sehen, wie selbst 30 Jahre alte Probleme immer noch nicht vernünftig gelöst werden können bzw. diverse Knoten im Hirn voraussetzen. Wieso gibt es eigentlich kein (System-) Programm zur Manipulation von Dateinamen? So ala "setfilename" und dann "--name=normal --extension=uppercase" ?

Lieber wurschtelt man mit unzähligen Tools herum - jedes mit eigenen Konventionen was Parameter und Dateninterpretation angeht - und nennt dies dann Flexibilität...

Eidolon
2014-02-15, 09:28:27
Es ist doch immer wieder erfrischend zu sehen, wie selbst 30 Jahre alte Probleme immer noch nicht vernünftig gelöst werden können bzw. diverse Knoten im Hirn voraussetzen. Wieso gibt es eigentlich kein (System-) Programm zur Manipulation von Dateinamen? So ala "setfilename" und dann "--name=normal --extension=uppercase" ?

Lieber wurschtelt man mit unzähligen Tools herum - jedes mit eigenen Konventionen was Parameter und Dateninterpretation angeht - und nennt dies dann Flexibilität...

Also wenn ich ihn richtig verstanden habe, dann hat er unter Windows das Problem. ;)

PHuV
2014-02-15, 12:24:03
Es ist doch immer wieder erfrischend zu sehen, wie selbst 30 Jahre alte Probleme immer noch nicht vernünftig gelöst werden können bzw. diverse Knoten im Hirn voraussetzen. Wieso gibt es eigentlich kein (System-) Programm zur Manipulation von Dateinamen? So ala "setfilename" und dann "--name=normal --extension=uppercase" ?

Lieber wurschtelt man mit unzähligen Tools herum - jedes mit eigenen Konventionen was Parameter und Dateninterpretation angeht - und nennt dies dann Flexibilität...
Jeder will halt immer etwas besonderes haben, und dann so ein Tool zu entwickeln, was alle dem gerecht wird, da muß man schon eine Menge machen. Mir geht das Sonder-, Leer- und Verzeichniszeichen (Unix / und Windows \), und 0d0a-Problem besonders auf dem Keks, das führt immer wieder zu Problemen.

Für das oben genannte Problem muß Du das immer mit mehreren Dateien in Form von dir und ls arbeiten, und Du mußt mit verschiedenen Ersetzungsprozessen in Form von 2 Parametern arbeiten. Aber Du hast schon Recht, da hätte man schon längst mal einen umfangreichen Systembefehl entwickeln können, wie das erwähnte rename.

Für Windows verwende ich sehr oft den Flexible Renamer (http://hp.vector.co.jp/authors/VA014830/english/FlexRena/), der einfaches Ersetzen, komplexes RegExp, umfangreiche Substituierungen, Joker, Substring-Bearbeitung und viele andere Sachen beherrscht, und das genialste, er kann UNDO mit Rückgängig. :up: In meinen Augen bisher eines der besten Umbenennen-Tools.

schalala
2014-02-15, 12:26:51
Die vorgestellten Lösungen funktionieren sehr gut.
Vielen Dank dafür!
Erweiterungen können ja weiterhin gepostet.
Eine Grundsatzdiskussion ist doch hier aber nicht notwendig.