ls: ordenando por timestamp (invertido) e se o timestamp é a mesma ordem pelo nome (não invertido)

0

Eu gostaria de pedir um diretório por timestamp reverso, mas se o timestamp é a mesma ordem pelo nome (não invertido)

Usando ls -tr se dois arquivos tiverem a mesma ordem de registro de data e hora por nome, mas no modo inverso

    
por NickF_93 22.10.2018 / 12:41

1 resposta

2

Você poderia usar algo assim

stat --printf "%Y %n
... | tr '
$ touch d; sleep 1; touch b c; sleep 1; touch a;
$ ls -tr
d  c  b  a
$ stat --printf "%Y %n
stat --printf "%Y %n
... | tr '
$ touch d; sleep 1; touch b c; sleep 1; touch a;
$ ls -tr
d  c  b  a
$ stat --printf "%Y %n%pre%" * | sort -z -k1,1n -k2 | sed 's/^[0-9]* //;s/$/\n/;s/\x0[0-9]* /  /g'
d  b  c  a
' '\n' # or just print the filenames: ... | sed 's/^[0-9]* //;s/$/\n/;s/\x0[0-9]* /\n/g'
" * | sort -z -k1,1n -k2 # or quoted file names: stat --printf "%Y %N%pre%" * | sort -z -k1,1n -k2
" * | sort -z -k1,1n -k2 | sed 's/^[0-9]* //;s/$/\n/;s/\x0[0-9]* / /g' d b c a
' '\n' # or just print the filenames: ... | sed 's/^[0-9]* //;s/$/\n/;s/\x0[0-9]* /\n/g'
" * | sort -z -k1,1n -k2 # or quoted file names: stat --printf "%Y %N%pre%" * | sort -z -k1,1n -k2
  • O primeiro critério de classificação é o campo 1 ( %Y - > carimbo de data e hora (precisão: segundos)), n classificação umerica.
  • Não r eversed como ls -t classifica com "newest first", que já é inversa de sort -n , mas você pode usar -k1,1nr para alterar isso.
  • Os segundos critérios de classificação são todos do campo 2 até o final da linha ( %n ou %N - > filename)
  • Use o delimitador zero para evitar problemas com nomes de arquivos, incluindo \n .

e, em seguida, corrija o formato ao seu gosto com tr e / ou sed :

%pre%

Saída:

%pre%     
por 22.10.2018 / 13:13