Sida 1 av 1

cp och sort kombinerat?

Postat: 01 nov 2008, 12:29
av gnys
Hej alla proffs.

Jag har ett litet problem.
Har en mp3-spelare som av någon anledning inte sorterar filer som jag vill, den sorterar på tidpunkt när filen sparades på enheten.
Detta gör att om man kopierar en ljudbok t.ex så kan filerna hamna i en spännande oordning, så att boken inte går att lyssna på. :(

Nu undrar jag om man kan använda kommandona cp och sort på något fiffigt sätt för att ordna detta t.ex:

Kod: Markera allt

 cp "filnamn" "filnamn" | sort
eller så.

Jag har sökt, men inte hittat något lämpligt, så det kanske inte går....
Vad säger ni som är proffs.

//Göran (inte så proffsig ännu :) )

Re: cp och sort kombinerat?

Postat: 01 nov 2008, 14:03
av mcNisse
Spelaren sorterar garanterat på taggar. Vad är det för spelare?

cp tar filerna i bokstavsordning...

Edit: eyed3d är ett bra program för att hantera taggar från terminalen.

Re: cp och sort kombinerat?

Postat: 01 nov 2008, 15:47
av Konservburk
gnys skrev:Har en mp3-spelare som av någon anledning inte sorterar filer som jag vill, den sorterar på tidpunkt när filen sparades på enheten.
Detta gör att om man kopierar en ljudbok t.ex så kan filerna hamna i en spännande oordning, så att boken inte går att lyssna på. :(
Jag tvivlar på att din mp3-spelare sorterar efter tidpunkt (eller taggar). Jag misstänker att den inte sorterar alls, utan bara plockar filerna i den ordning de har i själva filsystemet. De flesta mp3-spelare brukar använda ett fat-filsystem där ordningen till att börja med sammanfaller med ordningen filerna skapades (i filsystemet). Men detta gäller bara om filsystemet är tomt från början och du inte ersätter gamla filer med nya.
gnys skrev:Nu undrar jag om man kan använda kommandona cp och sort på något fiffigt sätt för att ordna detta t.ex:

Kod: Markera allt

 cp "filnamn" "filnamn" | sort
Med rekursiv kopiering, dvs cp -r katalogA katalogB, så kopierar cp filerna i den ordning de har i filsystemet. I ext3-filsystem beror filordningen på en hash, vilket medför att kopieringsordningen verkar bli ytterst slumpmässig.

Men nu är det så att cp kopierar argumenten du ger den i tur och ordning. Exempelvis så kommer kommandot cp filB filA katalog att kopiera först filB och sedan filA till katalog. Så då ställer vi oss genast frågan hur man på bästa sätt ger cp alla filnamnen i rätt ordning? Behöver vi använda sort? Svaret är nej. Vi använder oss istället av en så kallad glob, vilket är en slags matchningsoperator som skalet i bokstavsordning expanderar till de filnamn som matchar.

Vi tar ett exempel som tydligör det hela:

Kod: Markera allt

$ mkdir fuskljudbok
$ touch fuskljudbok/{a..f}.mp3
$ ls -U fuskljudbok
b.mp3  f.mp3  a.mp3  d.mp3  e.mp3  c.mp3
Nu har jag med ls -U listat fuskkapitlen i den konstiga ordning de har i filsystemet.

Kod: Markera allt

$ cp -r fuskljudbok /media/mp3spelare/
$ ls -U /media/mp3spelare/fuskljudbok/
b.mp3  f.mp3  a.mp3  d.mp3  e.mp3  c.mp3
Vi ser här att den rekursiva kopieringen har bevarat den konstiga ordningen. Det blir till att göra om kopieringen med en glob istället:

Kod: Markera allt

$ rm -f /media/mp3spelare/fuskljudbok/*.mp3
$ cp fuskljudbok/*.mp3 /media/mp3spelare/fuskljudbok/
$ ls -U /media/mp3spelare/fuskljudbok/
a.mp3  b.mp3  c.mp3  d.mp3  e.mp3  f.mp3
Nu ligger filerna istället i en vettig ordning som även skraltiga mp3-spelare bör förstå sig på.

Men du får som sagt vara vaksam om du redan har filer på mp3-spelaren eftersom filordningen då inte är garanterad på något sätt:

Kod: Markera allt

$ rm -f /media/mp3spelare/fuskljudbok/c.mp3
$ touch /media/mp3spelare/fuskljudbok/g.mp3
$ ls -U /media/mp3spelare/fuskljudbok/
a.mp3  b.mp3  g.mp3  d.mp3  e.mp3  f.mp3
Kontrollera därför alltid ordningen med ls -U om du inte vill riskera att drabbas av obehagliga överraskningar.

Re: cp och sort kombinerat?

Postat: 01 nov 2008, 16:33
av gnys
Jag är tacksam för att ni tar er tid med mig

Jag testade ditt förslag, men det blir inte bra. Är det något argument som du glömt för den där glob-kopieringen?
jag lade till -verbose för att se i vilken ordning filerna kopierades, och de blir kopierade i ordning..... ???
Vi ser här att den rekursiva kopieringen har bevarat den konstiga ordningen. Det blir till att göra om kopieringen med en glob istället:

Kod: Markera allt

    $ rm -f /media/mp3spelare/fuskljudbok/*.mp3
    $ cp fuskljudbok/*.mp3 /media/mp3spelare/fuskljudbok/
    $ ls -U /media/mp3spelare/fuskljudbok/
    a.mp3  b.mp3  c.mp3  d.mp3  e.mp3  f.mp3

Nu ligger filerna istället i en vettig ordning som även skraltiga mp3-spelare bör förstå sig på.

Kod: Markera allt

gnys@gnys-laptop-Ubuntu8-HH:~$ mkdir test1 test2
gnys@gnys-laptop-Ubuntu8-HH:~$ touch test1/{a..f}.mp3
gnys@gnys-laptop-Ubuntu8-HH:~$ ls -U test1
a.mp3  d.mp3  b.mp3  f.mp3  e.mp3  c.mp3
gnys@gnys-laptop-Ubuntu8-HH:~$ cp -r test1 test2/
gnys@gnys-laptop-Ubuntu8-HH:~$ ls -U test2/test1/
a.mp3  d.mp3  b.mp3  f.mp3  e.mp3  c.mp3
gnys@gnys-laptop-Ubuntu8-HH:~$ rm -f test2/test1/*.mp3
gnys@gnys-laptop-Ubuntu8-HH:~$ cp -v test1/*.mp3 test2/test1/
"test1/a.mp3" -> "test2/test1/a.mp3"
"test1/b.mp3" -> "test2/test1/b.mp3"
"test1/c.mp3" -> "test2/test1/c.mp3"
"test1/d.mp3" -> "test2/test1/d.mp3"
"test1/e.mp3" -> "test2/test1/e.mp3"
"test1/f.mp3" -> "test2/test1/f.mp3"
gnys@gnys-laptop-Ubuntu8-HH:~$ ls -U test2/test1/
a.mp3  d.mp3  b.mp3  f.mp3  e.mp3  c.mp3


Re: cp och sort kombinerat?

Postat: 01 nov 2008, 17:12
av Konservburk
gnys skrev:Jag testade ditt förslag, men det blir inte bra. Är det något argument som du glömt för den där glob-kopieringen?
jag lade till -verbose för att se i vilken ordning filerna kopierades, och de blir kopierade i ordning..... ???
Mitt förslag fungerar bara om destinationskatalogen ligger på ett fat-filsystem. Du verkar kopiera filerna till katalogen test2/test1/ som jag antar ligger på samma filsystem som källkatalogen test1/. Om det är ett ext3-filsystem så spelar det ingen roll i vilken ordning du kopierar eftersom filorningen i ett ext3-filsystem är helt oberoende av kopieringsordningen.

Du måste alltså kopiera till mp3-spelaren (eller något annat fat-filsytem) om du ska märka någon skillnad.

Re: cp och sort kombinerat?

Postat: 01 nov 2008, 21:24
av gnys
Ahhh, sorry.

Det verkar fungera väldigt bra när man kopierar till ett fat-system. ;D
Hehe, man lär sig något nytt varje dag, tackar för hjälpen.

//Göran