Ich pflege eine Musiksammlung wie diese:
Musik/Alben [FLAC] Musik/Alben [MP3]
und erstellen Sie M3U-Wiedergabelisten wie diese (führen Sie sie im Musikverzeichnis aus):
find "albums [FLAC]" "albums [MP3]" -type f \( -iname "*.mp3" -o -iname "*.flac" \) -print | sed 's/^\.\///g' | sort >> "$out_file"
aber ich habe mehrere Situationen wie diese:
Music/albums [MP3]/Artist A/album title/track.ext
Music/albums [MP3]/Artist B/album title/track.ext
Music/albums [FLAC]/Artist A/album title/track.ext
Music/albums [FLAC]/Artist B/album title/track.ext
In der Playlist werden nicht alle Alben eines bestimmten Interpreten zusammengefasst, sondern stehen aufgrund der Sortierung am Anfang oder Ende der Liste.
Ich habe mit der Verwendung von Overlaysfs experimentiert, um sie gemeinsam zu mounten – und das funktioniert, aber ich suche nach einer Möglichkeit zum Sortieren, sodass das m3u eher so aussieht:
Music/albums [MP3]/Artist A/album title/track.ext
Music/albums [FLAC]/Artist A/album title/track.ext
Music/albums [MP3]/Artist B/album title/track.ext
Music/albums [FLAC]/Artist B/album title/track.ext
Ich denke, dass dies möglich sein sollte oder in Python erledigt werden könnte, aber ich wäre für einen Schubs in die richtige Richtung dankbar!
Antwort1
Es ist sort
in Ihrer Pipeline. Sagen Sie ihm, was Sie brauchen:
sort -t / -k 3,3 -k 2r,2 -k 4
Wo
-t /
gibt das Trennzeichen an;-k 3,3
weist darauf hin, dass nach dem dritten Feld sortiert werden soll;- für Einträge mit gleichem dritten Feld,
-k 2r,2
weist auf die umgekehrte Sortierung nach dem zweiten Feld hin - Wenn dies nicht ausreicht,
-k 4
weist es darauf hin, das vierte Feld und alles, was folgt, zu berücksichtigen.
Beachten Sie, dass dieser spezielle Befehl überhaupt nicht nach dem ersten Feld sortiert. In Ihrem Beispiel sieht das erste Feld fest aus: Music
.
Wenn es Ihnen egal ist, ob es sich um MP3 oder FLAC handelt, können Sie das zweite Feld auch ignorieren. In diesem Fall sollte die Sortierung nach dem dritten Feld und allem, was danach kommt, erfolgen. Der Befehl dafür ist viel einfacher:
sort -t / -k 3
Weitere Informationen finden Sie unterdiese FrageUnd man 1 sort
.