Como classifico arquivos por data no nome do arquivo?

1

Eu tenho um conjunto de nomes de arquivos como este

vorlesung 02.11.15.mp4
vorlesung 04.01.16.mp4
vorlesung 07.12.15.mp4
vorlesung 09.11.15.mp4
vorlesung 09.12.15.mp4
...

A última parte do nome do arquivo é uma data em formato europeu. Agora eu tento classificá-los de acordo com a data com sort (já que awk e coisas parecem exageradas para isso). De esta resposta , concluí que algo assim deveria funcionar.

ls *.mp4 | sort -k 2.7,2.8 -k 2.4,2.5 -k 2.1,2.3

Mas, na realidade, apenas a chave 2.1,2.3 parece fazer alguma coisa. Quando eu aplico os outros separadamente, nada acontece. O sinalizador numeric-sort não ajuda. Qual é a sintaxe correta aqui?

    
por oarfish 02.03.2016 / 13:39

1 resposta

1

Bem ... awk não necessariamente deve ser descartado aqui. Podemos usá-lo para preceder nossos nomes de arquivos com a expressão pela qual queremos a classificação e depois que a classificação é feita, basta ignorar o prefixo.

$ cat lst
vorlesung 02.11.15.mp4
vorlesung 04.01.16.mp4
vorlesung 07.12.15.mp4
vorlesung 09.11.15.mp4
vorlesung 09.12.15.mp4
$ awk -F'[ .]' '{print $4 $2 $3, $0}' lst | sort | sed -e 's/^[0-9]* //'
vorlesung 02.11.15.mp4
vorlesung 07.12.15.mp4
vorlesung 09.11.15.mp4
vorlesung 09.12.15.mp4
vorlesung 04.01.16.mp4
    
por 02.03.2016 / 16:40