[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[Debian]:Re: datei\ name.ext -> datei_name.ext



Eine kleine runder Skriptspielchen am Morgen.

On Mon, Jan 10, 2000 at 12:29:32AM +0100, Jens Benecke wrote:
> On Sun, Jan 09, 2000 at 10:32:13PM +0100, Frank Berger wrote:
> 
> > Aber sed habe ich immernoch nicht verstanden.
> > Ich habe die man-page mal angefangen, aber so richtig hat sich mir das
> > leider nicht erschlossen,

sed würde ich auch nicht rein mit der Manpage lernen wollen. In Zeiten
von Perl, Python und Co ist es eh nur noch so selten notwendig, daß es
fragwürdig ist, ob es es lohnt für die verbleibenden Fälle noch zu
lernen.

> > for DATEI in `find . -name \*mp3`
> > do
> >  if [ `echo $DATEI | grep -c " " ` != 0 ]
> >  then
> >   NEU=`echo $DATEI | sed ersetzt " " gegen "_" `
> >   mv $DATEI $NEU
> >  fi
> > done
> 
> ls -1 *.mp3 | while read X ; do mv -v "$X" "`echo "$X" | sed 's# #_#g'`" ; done
> 
> Mit Perl ist es sicherlich noch kürzer. :)

Eher mit tr:
  ls -1 *.mp3 | while read X ; do mv -v "$X" "`echo "$X" | tr ' ' '_'`" ; done

Dann kann man noch das '-1' weglassen:
  ls *.mp3 | while read X ; do mv -v "$X" "`echo "$X" | tr ' ' '_'`" ; done

Natürlich hat das den Nachteil, daß es nur im aktuellen Verzeichnis
wirkt, Franks Variante oben sollte in allen Unterverzeichissen suchen,
wofür man natürlich find nimmt, wie er vorgeschlagen hat:

  for d in `find -name \*.mp3`; do mv -v "$d" "`echo "$d" | tr ' ' '_'`"; done

Und wenn man dann die '... are the same files'-Meldungen nicht haben will:
  for d in `find -name '* *.mp3'`; do mv -v "$d" "`echo "$d" | tr ' ' '_'`"; done

womit wir wieder bei einer Länge von Jens' Lösung wären, nur besser. ;-)

Der Übersicht wegen, sollte man die Backticks (') eher durch $()
ersetzen, aber das wird ja wieder länger. :-P

-- 
marko schulz

            "HipHop braucht kein' Mensch, aber Mensch braucht HipHop"
                                                      Fünf Sterne Deluxe
------------------------------------------------
Um sich aus der Liste auszutragen schicken Sie
bitte eine E-Mail an majordomo@jfl.de die im Body
"unsubscribe debian-user-de <deine emailadresse>"
enthaelt.
Bei Problemen bitte eine Mail an: Jan.Otto@jfl.de
------------------------------------------------
Anzahl der eingetragenen Mitglieder:     749


Reply to: