Bequem Dateinamen editieren?

Zepol

BSD begeisterter
Hallo zusammen,
kennt jemand ein Port/Package mit dem ich bequem mehrere hundert Dateinamen editieren kann. Ein Script ist natürlich auch gut!

Also mein Hauptanliegen wäre erst mal Leerzeichen in Unterstriche zu Konvertieren. Aber noch besser wäre wenn ich eine Zeichenkette wie Foo - Bar in Foo_Bar Konvertieren könnte.

Naja, ich bin Dabei meinen Datenbestand aufzuräumen und da wäre es echt Äzent z.B. meine Musikvideos (knapp 1000 Stück) von Hand zu Bearbeiten.
 
Zepol schrieb:
Hallo zusammen,
kennt jemand ein Port/Package mit dem ich bequem mehrere hundert Dateinamen editieren kann. Ein Script ist natürlich auch gut!

Also mein Hauptanliegen wäre erst mal Leerzeichen in Unterstriche zu Konvertieren. Aber noch besser wäre wenn ich eine Zeichenkette wie Foo - Bar in Foo_Bar Konvertieren könnte.

Naja, ich bin Dabei meinen Datenbestand aufzuräumen und da wäre es echt Äzent z.B. meine Musikvideos (knapp 1000 Stück) von Hand zu Bearbeiten.

z.B.:

for i in *.mpg; do mv $i `echo $i | sed 's/FOO\ -\ /BAR/FOO_BAR/g'`; done

du kannst auch mal in man find gucken - da gibt's 'ne exec-funktion.

Die Leerzeichen sind auch regular expressions - deswegen unbedingt einen Backslash angeben!
 
Das Leerzeichen muss mit dem \ ,,maskiert´´ werden, damit es nicht ignoriert wird.
 
Huh?

Nein, der match ist schon gequotet. Also fasst es die shell nicht mehr an.
sed ignoriert es auf keinen Fall.
Und.. mit dem *.mpg und 'mv $i' schiesst Du Dir schon ins Knie. Bitte
sowas vorher testen ;-)

Aber .. er will doch generell das aendern, und dann doch eher das hier:
Code:
for i in *.mpg; do mv -- "$i" "`echo "$i" | tr ' ' '_'`" ; done
Das '--' faengt noch so schweinische Dateinamen ab, die mit einem '-' beginnen ;-)

Alles klar? :-)
 
double-p schrieb:
Huh?

Nein, der match ist schon gequotet. Also fasst es die shell nicht mehr an.
sed ignoriert es auf keinen Fall.
Und.. mit dem *.mpg und 'mv $i' schiesst Du Dir schon ins Knie. Bitte
sowas vorher testen ;-)

Aber .. er will doch generell das aendern, und dann doch eher das hier:
Code:
for i in *.mpg; do mv -- "$i" "`echo "$i" | tr ' ' '_'`" ; done
Das '--' faengt noch so schweinische Dateinamen ab, die mit einem '-' beginnen ;-)

Alles klar? :-)

...viele Wege führen nach Rom. Testen sollte man sein Script auf jeden Fall vorher ;-)
 
tr(1) reicht nicht ganz aus. Denn 'Foo - Bar' wird dann zu 'Foo_-_Bar' und das will der OP anscheinend nicht (warum auch immer?)

sed 's/[- ]//g'
 
oder mv "${i}" "${i:s/ - /_/}" ...
warum externe programme nutzen, wenn die shell schon funktionen anbietet..

auf bald
oenone
 
Hm right.
Da schlaegt das portable sh-coding bei mir zu sehr durch :-)

Und ob nu sed oder tr.. haengt davon ab, was OP nun wirklich will und was ihm
am besten reinlaeuft..
 
@oneone: Waere noch nett, wenn du dafuer die Shell angeben wuerdest. Achja, warum externe Programm verwenden (bash, zsh, ksh), wenn es auch mit Boardmitteln geht? *SCNR*
 
ok.. sorry.. das war fuer die zsh. bin die schon so gewoehnt, dass ich nichts anderes mehr mag :D

der einfachste weg ist wohl tatsaechlich mv "$foo" "$(echo $foo|sed 's/ - /_/g')"

auf bald
oenone
 
Danke für eure Antworten, ich werd mich dann mal ran setzen, es umzusetzen.

Als nächstes muß ich mich umbedingt mal mit dem Scriptschreiben befassen. Hilft ja irgendwie ständig weiter. :D
 
Zurück
Oben