Esiste un modo per fornire un ordinamento a una query mdfind?

4

Nel tentativo di ottenere un elenco di tutti i file musicali da un particolare album usando mdfind, vedo che i file non vengono necessariamente restituiti in qualsiasi ordine. Preferirei l'ordine di album / tracce, se possibile, ma non riesco a trovare un modo per fornire l'ordinamento sulla riga di comando. L'invocazione corrente è qualcosa come:

mdfind -onlyin "$MUSICROOT" -literal "$MDQUERY"

dove:

$MUSICROOT is ~/Music/iTunes
$MDQUERY is "kMDItemContentTypeTree == 'public.audio' && kMDItemAlbum == '*$1*'c"

Idealmente, vorrei aggiungere qualcosa alla seguente:

ORDER BY kMDItemAlbum, kMDItemAudioTrackNumber
    
posta jmhindle 23.08.2011 - 19:38
fonte

2 risposte

0

A rischio di affermare l'ovvio, "ordinare".

es. mdfind -onlyin "$ MUSICROOT" -literale "$ MDQUERY" | sort

ordinerà l'output in ordine alfabetico, dandoti artista, titolo, traccia. (non farà il bel trucco di iTunes di ignorare "The").

Il comando sort ha molte opzioni, incluso l'ordinamento su particolari campi se vuoi un maggiore controllo.

Modifica: la funzione di script della shell sottostante fornirà l'ordinamento desiderato nel caso specifico menzionato:

function sort_file()
{
    TMPFILE='mktemp /tmp/sortable.XXXXXX' || exit 1
    export MDLS="mdls -raw -name kMDItemAlbum -name kMDItemAudioTrackNumber"
    export TR="tr \"
function sort_file()
{
    TMPFILE='mktemp /tmp/sortable.XXXXXX' || exit 1
    export MDLS="mdls -raw -name kMDItemAlbum -name kMDItemAudioTrackNumber"
    export TR="tr \"%pre%\" \"\;\""
    awk '{system( "$MDLS \"" $0 "\" | $TR" ); print "\;"$0; }' $1 > $TMPFILE
    sort -t\; -k 2n -k 1f $TMPFILE | awk -F";" '{ print $3; }' > $1
}
\" \"\;\"" awk '{system( "$MDLS \"" $0 "\" | $TR" ); print "\;"$0; }' $1 > $TMPFILE sort -t\; -k 2n -k 1f $TMPFILE | awk -F";" '{ print $3; }' > $1 }
    
risposta data 23.08.2011 - 21:06
fonte
4

Ho usato la seguente funzione di shell per fornire l'ordinamento:

function sort_file()
{
    TMPFILE='mktemp /tmp/sortable.XXXXXX' || exit 1
    export MDLS="mdls -raw -name kMDItemAlbum -name kMDItemAudioTrackNumber"
    export TR="tr \"
function sort_file()
{
    TMPFILE='mktemp /tmp/sortable.XXXXXX' || exit 1
    export MDLS="mdls -raw -name kMDItemAlbum -name kMDItemAudioTrackNumber"
    export TR="tr \"%pre%\" \"\;\""
    awk '{system( "$MDLS \"" $0 "\" | $TR" ); print "\;"$0; }' $1 > $TMPFILE
    sort -t\; -k 2n -k 1f $TMPFILE | awk -F";" '{ print $3; }' > $1
}
\" \"\;\"" awk '{system( "$MDLS \"" $0 "\" | $TR" ); print "\;"$0; }' $1 > $TMPFILE sort -t\; -k 2n -k 1f $TMPFILE | awk -F";" '{ print $3; }' > $1 }

META NOTA: l'avrei inserito in un commento nella risposta sopra, ma non è riuscito a farlo correttamente.

    
risposta data 24.08.2011 - 19:25
fonte

Leggi altre domande sui tag