Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: [OPGELOST] Verwijder stukje met / uit een string  (gelezen 1805 keer)

Offline pluim003

  • Lid
[OPGELOST] Verwijder stukje met / uit een string
« Gepost op: 2011/02/20, 00:30:41 »
Hallo,

Ik probeer met id3info mp3's te renamen naar artiest/album/tracknummer titel.
Alleen zijn er mp3's die een tracknummer hebben die bestaat uit bv. 4/14 .
Ik wil alleen de 4 overhouden maar krijg het vooralsnog niet voor elkaar op een simpele wijze na een hoop gepuzzel.

Het bepalen van het tracknummer met id3info gaat als volgt:

TRACKNUM="`id3info "$file" | grep '=== TRCK' | sed -e 's/.*: //g'`"                

Of ik moet een loopje gaan schrijven die checkt of er een / in het tracknummer zit en zoja die / en alles erachter er van af kapt. Maar het moet simpeler kunnen.

Wilde wel id3tool gebruiken maar die heeft soms geen tracknummergegevens (leest geen id3v2 uit).

Anyone?

Alvast bedankt.
« Laatst bewerkt op: 2011/02/23, 10:07:20 door pluim003 »

Offline Roc.am

  • Lid
Re: Verwijder stukje met / uit een string
« Reactie #1 Gepost op: 2011/02/20, 00:40:37 »
Heb wel ooit eens KRename gebruikt uit het Softwarecentrum.

- Roc

Offline pluim003

  • Lid
Re: Verwijder stukje met / uit een string
« Reactie #2 Gepost op: 2011/02/20, 08:05:44 »
Yep, werkt ook wel, maar met een hele zwik directories niet handig om alles handmatig te gaan toevoegen.
Ik wil het script 'gewoon' opstarten vanuit een directory en dan werkt ie alle subdirectories door.
Of ik sta in een directory en dan laat ik alleen die ene directory hernoemen/moven. Vind ik krename net iets te omslachtig voor qua handelingen.

Re: Verwijder stukje met / uit een string
« Reactie #3 Gepost op: 2011/02/20, 10:18:33 »
Pluim003,

Afkappen kan je met cut:
cut -d'/' -f1
Het zal dat gene dat voor de eerste / bewaren.

Een loop zal iets in de geest van:
for i in *.mp3
do
   TRACKNUM="`id3info "$i" | grep '=== TRCK' | sed -e 's/.*: //g'`"         
done

MvG,
MauRice
Registered Linux user: 473556

Offline pluim003

  • Lid
Re: Verwijder stukje met / uit een string
« Reactie #4 Gepost op: 2011/02/20, 10:36:15 »
Maurice,

Thanx. Alleen hoe krijg ik dat cut-verhaal goed in die regel? Zover gaat mijn bashprogramming nog niet.
De loop is al actief. Als het script naar wens is zal ik hem eens plaatsen. Er zijn er zo wel meerdere te vinden, maar heb wat gecombineerd/geëdit en dergelijke.

mvg, Dick

Re: Verwijder stukje met / uit een string
« Reactie #5 Gepost op: 2011/02/20, 11:09:32 »
Dick,

Iets in de geest van:
for i in *.mp3
do
   TRACKNUM=`id3info "$i" | grep '=== TRCK' | cut -d'/' -f1`   
done

Op het net zijner genoeg site die over bash-script gaan:
http://www.tldp.org/LDP/abs/html/index.html
http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html
http://linux.sitetree.nl/doc/html/node196.html
http://wiki.nedlinux.nl/index.php?page=BasiscursusBash
MvG,
MauRice
Registered Linux user: 473556

Offline pluim003

  • Lid
[SOLVED] Re: Verwijder stukje met / uit een string
« Reactie #6 Gepost op: 2011/02/20, 22:29:44 »
Maurice, na wat gegoogle mbt die cut-functie kwam ik bij een andere oplossing:

TRACKNUM="`id3info "$file" | grep '=== TRCK' | sed -e 's/.*: //g'`"
TRACKNUM=${TRACKNUM%/*}


De 1e regel met TRACKNUM kan dan nog waardes bevatten in de vorm van 4/14.
De 2e regel met TRACKNUM kapt alles vanaf de / eraf.

En dan heb ik nog een 2e stukje:

length=${#TRACKNUM}
if [ $length = 1 ]
then TRACKNUM=0$TRACKNUM
fi


die in geval van dat er 4 staat er 04 van maakt.




Re: Verwijder stukje met / uit een string
« Reactie #7 Gepost op: 2011/02/21, 08:11:09 »
Euhm, de delimiter die je in sed gebruikt maakt niets uit.

Dus bv.
sed 's:/.*::'

- SeySayux
I use a Unix-based system, that means I'll get laid as often as I have to reboot.
LibSylph
SeySayux.net

Offline pluim003

  • Lid
Re: Verwijder stukje met / uit een string
« Reactie #8 Gepost op: 2011/02/21, 10:16:34 »
Euhm, de delimiter die je in sed gebruikt maakt niets uit.

Dus bv.
sed 's:/.*::'

- SeySayux

Oei, zou ik kunnen proberen. Ben niet zo heel erg thuis in sed. En het grootste deel van het script heb ik ook elders gevonden. Heb vroeger redelijk wat aan programmeren gedaan, maar dat was meer in Pascal en Basic. Perl is er een paar jaar geleden bij gekomen. Zou daar nog iets mee kunnen doen, maar met de laatste aanpassing werkt ie nu. Ga ik hem nu verder uitbreiden zodat ik met verschillende templates kan werken (via een startupvariabele), zodat ik kan kiezen of ik Artiest/Album/Nummer Titel wil of in een directory Artiest - Titel.mp3 (met name voor verzamelspul of artiesten waar ik maar een paar nummers van heb die belanden in bv. A/A_Overig .
En loggen kan geen kwaad, want ik wil ze eigenlijk gaan moven, maar mocht ik 'ineens' mp3tjes 'kwijt' zijn dan is het wel handig dat ik weet waar ze beland zijn door de move-actie (vanwege foutieve tags of zo). ;-)