Como classificar arquivos em um diretório com base no número de índice do arquivo?

1

Eu tenho arquivos como:

4-some file.mp4
1-another file.mp4
3-one more file.mp4
2-got another file.mp4

e assim por diante.

Usar a linha de comando para reproduzir os arquivos em vlc usando vlc * os reproduz em ordem não classificada.

Então, tentei reproduzir os arquivos usando vlc " vlc < <(ls * | sort -V) " não funciona.

Tentando alterar o registro de data e hora dos arquivos usando for i in "$(ls [!R]* | sort -V)"; do touch "$i";sleep 1; done não está funcionando porque "$(ls [!R]* | sort -V)" representa a lista completa de arquivos como um argumento, mas não consigo remover as aspas duplas, pois os arquivos têm espaços em seus nomes.

    
por munish 04.07.2016 / 10:52

2 respostas

6

Isso deve funcionar

find . -name "*mp4" -print0 | sort -Vz | xargs -0 vlc
    
por 04.07.2016 / 11:01
2

O GNU ls também tem -v natural sort of (version) numbers within text , como sort -V .

Os espaços no nome do arquivo podem ser tratados removendo o espaço de $IFS (supondo que você não tenha novas linhas em nomes de arquivos):

$ IFS=$'\n' 
$ for x in $(ls -v) ; do echo "> $x" ; done
> 1-aa aa
> 2-cc cc
> 10-bb bb
> 21-dd dd
$ vlc $(ls -v)

(Se você fizer isso interativamente, IFS permanecerá modificado depois).

Para mais informações sobre IFS , consulte os escritos de David Wheeler sobre caracteres especiais em arquivo nomes

    
por 04.07.2016 / 12:50

Tags