Dateien bestimmter Anzahl sequentiell kopieren

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo zusammen,

    ich schaue hier schon seit einiger Zeit rein um mich zu informieren und habe schon erste Gehversuche mit Raspbian und im allgemeinen mit Linux erfolgreich hinter mir.

    Leider finde ich zu oben genannten Thema nicht wirklich Hilfestellung im Internet sodass ich mich nun zum ersten mal irgendwo angemeldet habe.

    Folgender Sachverhalt:

    Im Auto habe ich einen nachgerüsteten MP3 Player welcher einen CD Wechsler emuliert. Ich kann 6 Ordner mit jeweils höchstens 99 MP3´s bestücken. Leider hat der Player den Nachteil, dass er die Datei welche als erste auf die SD Karte/USB Stick kopiert wurde als Datei 1 anerkennt.

    vereinfachtes Bsp. : Ich kopiere 3 Dateien = 1: 5 MB 2: 3 MB 3: 8 MB so ist die Abspielfolge Mp3 2, 1 und 3.

    Bei Musik wäre es sicherlich von Vorteil um eine zufällige Wiedergabe zu haben, nur ist es so, dass ich Hörbücher Höre und da eine Reihenfolge zwingend erfolgen muss. Manuell ist das echt ätzend Datei 1 schieben, warten, Datei 2 schieben, warten.... -> 99

    Deswegen suche ich nach einer Lösung einfach eine gewisse Anzahl an Dateien der Reihe nach, nach Dateiname zum Zielort zu kopieren.

    Dabei können es nicht immer 99 sein. Da Hörbücher oft mehr als 99 MP3 Dateien in einem Kapitel oder Band haben. (Z.B. 109 Dateien Kapitel 1: CD01 99 Dateien; CD02 10 Dateien /120 Dateien Kapitel 2: CD02 89 Dateien; CD03 31 Dateien usw.

    Ausstattung Raspi 2B mit Raspbian Jessi (wird gerade als kleines NAS ausgebaut und soll zukünftig auch die Hörbücher horten)

    Wäre echt super wenn jemand einen Lösungsvorschlag zu bieten hat.

    Grüße

    Patrick

  • Hallo Patrick,

    Kannst du ein bisschen Programmieren, bzw. wärst bereit das zu lernen? Das Problem ist in einem Programm (Sparache würde ich sagen ist egal) recht schnell geschrieben, du ließt alle Dateien ein und sortierst diese am besten "natürlich" (z.B. in PHP mit der Funktion natsort https://secure.php.net/manual/de/function.natsort.php). Im Anschluss dann das kopieren schön der Reihe nach durchführen.

    Gruß
    Chris

    PS: Was für ein komischer MP3 Player!! ;)

  • Zitat

    Hallo Patrick,

    Kannst du ein bisschen Programmieren, bzw. wärst bereit das zu lernen? Das Problem ist in einem Programm (Sparache würde ich sagen ist egal) recht schnell geschrieben, du ließt alle Dateien ein und sortierst diese am besten "natürlich" (z.B. in PHP mit der Funktion natsort https://secure.php.net/manual/de/function.natsort.php). Im Anschluss dann das kopieren schön der Reihe nach durchführen.

    Gruß
    Chris

    Programmieren kann ich bisher nicht, abgesehen von einfachen html und meine ersten Linux Schritten. Allerdings bin ich lernwillig. Danke für den Tipp! Mit PHP wollte ich mich sowieso schon immer mal befassen. :)


    Zitat

    PS: Was für ein komischer MP3 Player!! ;)

    Ach der ist, abgesehen von der Bestückungsprozedur, ganz praktisch! Mit Bluetooth, Freisprecheinrichtung und dank Adapter voll mit dem Werksradio kompatibel. = )
    Hab ja ein altes Auto und mit CD´s mit 18 - 20 Titeln würde ich wahnsinnig werden. :D


    Grüße

    Patrick


  • Mit PHP wollte ich mich sowieso schon immer mal befassen. :)

    Um hier den Kommentaren zuvor zu kommen, PHP ist nicht die typische Sprache dafür und war auch nur als Beispiel für die Funktion genannt, die ich daher kannte.
    Aber wenn du HTML schon kannst, ist es sicherlich keine schlechte Idee etwas PHP zu lernen und die Aufgabe ist damit möglich. Einige Stichworte dazu sind: glob, natsort, copy

    Du kannst PHP-Skripte auch von der Kommandozeile ausführen, das kommando dazu müsste

    Code
    php script.php


    lauten. (u.U. musst du dafür aber auch Google befragen, bin mir da gerade unsicher)

    Gruß
    Chris

    • Offizieller Beitrag

    Nach deiner obigen Erklärung sortiert er es doch nach grösse, was schwachsinnig ist. Denn so kriegst du da nie ne richtige Reihenfolge rein,Ich hatte auch mal so ein Autoradio (10 Jahre bestimmt her) was diese seltsame Struktur hatte, ich habe das Problem durch Neukauf gelöst. In Zeiten von 20€ Autoradios würde ich nicht meine Zeit mit sowas verbringen um dann am Ende ein weniger beknacktes aber immer noch beknacktes Abspielsystem zu haben.

  • Das ist vermutlich in einem kleinen bash Script - wenn nicht sogar in einem bash Einzeiler - zu erledigen. Lies alle Dateien, sortiere die Dateien nach einem Kriterium und kopiere sie dann in dieser Reihenfolge.

  • Zitat

    Um hier den Kommentaren zuvor zu kommen, PHP ist nicht die typische Sprache dafür und war auch nur als Beispiel für die Funktion genannt, die ich daher kannte.

    Aber wenn du HTML schon kannst, ist es sicherlich keine schlechte Idee etwas PHP zu lernen und die Aufgabe ist damit möglich. Einige Stichworte dazu sind: glob, natsort, copy

    Danke nochmals, ich werde mich da einlesen


    Das sollte man eigentlich mit einer Befehlszeile erledigen koennen.

    Allerdings habe ich das Problem noch nicht klar erfasst:
    * Wie heissen die Files ?
    * In welcher Reihenfolge sollen sie kopiert werden ?

    Es sind MP3 Files, meist sind diese wie nachfolgend benannt:

    Buch XY_Kapitel 01_001
    Buch XY_Kapitel 01_002
    Buch XY_Kapitel 01_003
    Buch XY_Kapitel 01_004
    ...
    Buch XY_Kapitel 01_123

    Sie sollen in der Reihenfolge entsprechend der Mp3 Titel nacheinander kopiert werden.

    Zitat

    Nach deiner obigen Erklärung sortiert er es doch nach grösse, was schwachsinnig ist. Denn so kriegst du da nie ne richtige Reihenfolge rein,Ich hatte auch mal so ein Autoradio (10 Jahre bestimmt her) was diese seltsame Struktur hatte, ich habe das Problem durch Neukauf gelöst. In Zeiten von 20€ Autoradios würde ich nicht meine Zeit mit sowas verbringen um dann am Ende ein weniger beknacktes aber immer noch beknacktes Abspielsystem zu haben.

    Vielen Dank für deinen weisen Rat. So 20 Euro Radios bringen auch meist Disco/Kirmes Beleuchtung mit, auf die ich gerne verzichte, da könnte ich mir gleich eine Pommestheke ans Heck schrauben. Ich bevorzuge da lieber das Werksradio mit der Zusatzfunktion unter Zuhilfenahme eines Gadgets, ist stimmiger. Das ich dann einmal im Monat 5 Minuten mehr Zeitaufwand habe um Mp3´s aufzuspielen ist für mich nebensächlich und macht den Player sicherlich nicht beknackt. Da ich mal stark davon ausgehe, dass es sich um ein Forum für den Raspberry Pi und alles rund um dessen Betrieb handelt, ist die Kaufberatung bezüglich Autoradios hier fehl am Platze. Ich denke dass wissen wir beide, du noch mehr als Mod.

    Mal eine andere Sichtweise: Vielleicht daran gedacht, dass es nicht unbedingt um die Problemlösung an sich geht sondern um den Übungs-/Erfahrungscharakter?

    Aber egal, ich wünsche dir noch einen schönen Abend und den anderen danke ich für Ihre Beteiligung. :)

    • Offizieller Beitrag

    Ich bin ein Freund des Bastelns auch des puren Bastelns willens. Aber Ich bin aber auch pragmatisch. Und egal wie du es drehst und wendest...Der Player ist beknackt. :fies: Das Sortierverhalten hätte dich, sobald es vorher bekannt gewesen wäre, vom Kauf abgehalten. Natürlich kannst du durch durch manuelles Kopieren das Elend einfacher ertragen und das sollte in welche Sprache auch immer, recht schnell umgesetzt sein

  • Ich verstehe alkertrazz so, daß der Player nicht nach Größe, sondern nach dem Zeitstempel der Dateien sortiert - bei parallelem Kopieren im Windows-Dateimanager sind vermutlich die kleinen Dateien zuerst fertig kopiert und erscheinen dem Player daher älter. Ich würde das mit einem bash-Skript lösen:

    Bash
    #!/bin/bash
    cd <Quellverzeichnis>
    for f in *
    do
     cp $f <Zielverzeichnis>/
    done

    Wenn die Dateien bereits auf dem Zielmedium sind, reicht vielleicht auch ein einfacher touch, um den Zeitstempel zu aktualisieren:

    Bash
    #!/bin/bash
    cd <Zielverzeichnis>
    for f in *
    do
      touch $f
      sleep 1 # sicherheitshalber, evtl. auch nicht notwendig
    done

    Beide Methoden setzen natürlich voraus, daß die Dateien so benannt sind, daß z.B. ein 'ls' sie in der richtigen Reihenfolge ausgibt - aber das läßt sich ja leicht überprüfen und wäre bei dem eingestellten Beispiel der Fall.

  • Die Files haben eine schoene Namenskonvention, da ist es recht einfach:

    Code
    ls -1 Buch* | sort | xargs -d "\n" cp -t /tmp

    Wahrscheinlich ist sort nicht mal noetig, weil ls die Files schon sortiert ausgibt.

    Bei Buch* so viel vom Filenamen eingeben dass ls die richtigen Files auswaehlt.
    Anstelle von /tmp das Ziel-Directory angeben.

  • Zitat

    Ich verstehe alkertrazz so, daß der Player nicht nach Größe, sondern nach dem Zeitstempel der Dateien sortiert - bei parallelem Kopieren im Windows-Dateimanager sind vermutlich die kleinen Dateien zuerst fertig kopiert und erscheinen dem Player daher älter. Ich würde das mit einem bash-Skript lösen:

    Genau!

    Ich danke euch allen für eure Hinweise, wenn ich mit dem aktuellen Hörbuch fertig bin, werde ich das mal testen und berichten. :)

    Grüße Patrick

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!