linux - definindo a ordem na qual os arquivos são lidos ou saídos com utilitários (classificação)

0

Estou tendo problemas com programas que leem arquivos na ordem errada e também em uma ordem indesejável com utilitários como ls .

Eu já experimentei algumas das opções LC_COLLATE , mas nenhuma delas se encaixam na preferência que eu procuro, então imaginei que deve haver algo mais que eu possa fazer.

Exemplos de comandos que produzem uma ordem errada:

user@host: /home/user/Video $ mpv *.mkv

Existem 150 arquivos em / home / user / Video, e aqui estão os 12 primeiros um comando de um programa como mpv *.mkv iria ler:

TVSeriesName - 01.mkv
TVSeriesName - 02.mkv
TVSeriesName - 03.mkv
TVSeriesName - 04.mkv
TVSeriesName - 05.mkv
TVSeriesName - 06.mkv
TVSeriesName - 07.mkv
TVSeriesName - 08.mkv
TVSeriesName - 09.mkv
TVSeriesName - 10.mkv
TVSeriesName - 100.mkv
TVSeriesName - 101.mkv

Está a ler 100 antes de ler 11, mesmo com o zero.

O ideal é que ele os leia na ordem correta de 1-150, mesmo sem um zero inicial.

O que eu quero é ter uma ordem universal na qual os arquivos são lidos e classificados, o que lembra o padrão do gerenciador de arquivos ranger .

Exemplo:

.1-hiddendir/
.2-hiddendir/
.a-hiddendir/
.b-hiddendir/
.C-hiddendir/
.d-hiddendir/
.E-hiddendir/
1-dir/
2-dir/
A-dir/
b-dir/
c-dir/
D-dir/
.1-dotfile
.2-dotfile
.a-dotfile
.b-dotfile
.C-dotfile
1-file
2-file
a-file
B-file
c-file

SO: Arch Linux, FS: ext4

O que eu posso fazer com configurações de ambiente, ou qualquer coisa, em uma distribuição Linux para conseguir isso?

    
por nixon 27.03.2016 / 04:00

1 resposta

1

find . -maxdepth 1 -type f  -name '*.mkv' -print0 | sort -Vz | xargs -0r mpv

Isso usa find para exibir uma lista separada por NUL de todos os nomes de arquivos correspondentes a '* .mkv' no diretório atual, então GNU sort (com -z ou --zero-terminated para entrada separada em NUL e -V ou --version-sort para classificar os nomes de arquivos) e, finalmente, xargs -0r mpv para executar mpv com todos os nomes de arquivos na ordem classificada como os argumentos.

Isso funcionará com qualquer nome de arquivo, mesmo aqueles com espaços, feeds de linha ou meta-caracteres do shell no nome.

AFAIK, apenas GNU sort e sort do FreeBSD atualmente suportam a opção -z ou --zero-terminated .

    
por 27.03.2016 / 10:19