Isso deve funcionar
find . -name "*mp4" -print0 | sort -Vz | xargs -0 vlc
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.
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