[an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive]
 
[an error occurred while processing this directive] [an error occurred while processing this directive]
Skåne Sjælland Linux User Group - http://www.sslug.dk Home   Subscribe   Mail Archive   Forum   Calendar   Search
MhonArc Date: [Date Prev] [Date Index] [Date Next]   Thread: [Date Prev] [Thread Index] [Date Next]   MhonArc
 

Re: [MISC] mp3 fra audio-cd



Rune Zedeler <sslug@sslug> writes:

> Henrik Christian Grove wrote:
> 
> > > Divinorum_Isms_06_can_you_hear.mp3
> > > - men det, jeg søger, er
> > > Divinorum_Isms_06_CanYouHear.mp3
> > for i in *.mp3; do mv $i `echo $i | perl -ne 'split /(\d)/; $_[4] =~
> > s/_(.)/\U\1/g; print $_[0].$_[1].$_[3]."_".$_[4].$_[5];'`; done
> 
> 1000 1000000 tak - det var bare ikke helt det, jeg søgte - men det ser
> ud til at du nemt kan rette det til... Problemet er, at det ikke er helt
> generelt nok - retter ikke i album og artist men kun i titel (f.eks.
> skal "Michael Jackson" også have fjernet et space).

Jeg forsøgte at lave præcis den transformation du havde antydet. Jeg
undrede mig godt nok lidt over at du ikke ville have mellemrummene/_'erne
væk i det første led,.

> Kan du ikke lave noget, der simpelt hen - som jeg skrev - fjerner alle
> SPACES (ikke underscores) og gør efterfølgende bogstav stort?
> Så skal filen selvfølgelig til at starte med hedde
> "Divinorum_Isms_06_can you hear.mp3"
> (med spaces istedet for underscores) - men DET kan man jo sagtens få
> grip til.
> Jeg kan nu godt se, at jeg skrev forkert - resultat-filnavnet bliver
> ikke
> Divinorum_Isms_06_CanYouHear.mp3 men derimod
> Divinorum_Isms_06_canYouHear.mp3 (med småt c) - men det overlever jeg
> nok.

for i in *.mp3; do 
  mv "$i" `echo $i | perl -ne 'split /(\d)/; $_[0] =~ s/ (.)/\U\1/g; $_[4] =~ s/ (.)/\U\1/g; print @_[0,1,3,4,5];'`; 
done

> Hvis den kan rekursere igennem subdirs vil det være suverænt 

Så tror jeg det bliver noget i retning af (ikke afprøvet):

for i in `find . -name "*.mp3" -printf "\"%p\"\n"`; do 
  mv "$i" `echo $i | perl -ne 'split /(\d)/; $_[0] =~ s/ (.)/\U\1/g; $_[4] =~ s/ (.)/\U\1/g; print @_[0,1,3,4,5];'`; 
done

(Spørgsmål til shell-hajerne: Kan man få for til at iterere over
nulterminerede strenge, eller er mit printf-trick nødvendigt?)

> Så vidt jeg kan forestille mig vil dette være nemmere at lave end det,
> du lavede.

Det tog da en halv times tid før det virkede i formiddags, mens det nu
bare drejede sig om at kunne gentage den rigtige del af koden, og så at
finde et knap 2 år gammelt indlæg i postarkivet. Så jo det var en del
lettere i denne omgang.

Det vil forresten ikke virke hvis der indgår cifre i enten bandets
(f.eks. U2) eller albummets navn. Det gider jeg ikke løse.

Men problemet med første bogstaver i sporets navn (som vel egentlig
skyldes dårlige oplysninger i CDDB), kan løses ret nemt. Den
ikke-rekursive version bliver:

for i in *.mp3; do 
  mv "$i" `echo $i | perl -ne 'split /(\d)/; $_[0] =~ s/ (.)/\U\1/g; $_[4] =~ s/ (.)/\U\1/g; $_[4] =~ s/_(.)/_\U\1/; print @_[0,1,3,4,5];'`; 
done

Det skulle være let at lave en rekursiv version. Der er sikkert også
ting i perl-koden der kunne være skrevet smartere, hvis nogen har lyst
til at forbedre på det så smut over i sslug.perl.

.Henrik

-- 
Hvad har din bedstemor mon lettest ved at forstå? At din computer er
dørvogter på din forbindelse til internettet?  Eller at den er firewall
på din internet connection?
                                          -- citat Jacob Sparre Andersen


 
Home   Subscribe   Mail Archive   Index   Calendar   Search

 
 
Questions about the web-pages to <www_admin>. Last modified 2005-08-10, 19:28 CEST [an error occurred while processing this directive]
This page is maintained by [an error occurred while processing this directive]MHonArc [an error occurred while processing this directive] # [an error occurred while processing this directive] *