Classificando nomes de arquivos

0

Como posso classificar nomes de arquivos como este

B-100.txt
B-11.txt
A-03.txt
A-01.txt
C-110.txt
C-10.txt

para isso?

B-11.txt
B-100.txt
A-01.txt
A-03.txt
C-10.txt
C-110.txt

Eu gostaria de deixar a ordem do prefixo - B, A, e depois C, não ABC - como está, mas ordenar os números no final numericamente não alfabeticamente. Os números vão como

01, 02, ....10, 11, ....100, 101, ...

Há sempre um hífen em cada nome de arquivo e ele delimita a parte do prefixo e a parte do número.

Eu gostaria de classificar os nomes dos arquivos que eu exporto de alguns softwares e o software automaticamente adiciona esse tipo de números de série peculiares no final, então estou com problemas para gerar uma lista ordenada desses nomes de arquivos. Não consigo renomear esses arquivos antes de classificar.

    
por stacko 07.12.2016 / 21:39

2 respostas

0

(
  SECTION=""
  OLDPREFIX="-invalid"
  while read LINE
  do
    PREFIX="${LINE/-*/}"
    if [ "$PREFIX" == "$OLDPREFIX" ]
    then
      SECTION="$SECTION"$'\n'"$LINE"
    else
      echo "$SECTION" | tail -n +2 | sort -V
      SECTION=$'\n'"$LINE"
      OLDPREFIX="$PREFIX"
    fi
  done
  echo "$SECTION" | tail -n +2 | sort -V
) <<'EOF'
B-100.txt
B-11.txt
A-03.txt
A-01.txt
C-110.txt
C-10.txt
EOF
    
por 07.12.2016 / 23:16
0

Estou usando o linux vermelho.

$ awk -F- '!A[$1]++{print $1}' input.txt | while read px; do grep "$px" input.txt | sort -n -t- -k2; done
B-11.txt
B-100.txt
A-01.txt
A-03.txt
C-10.txt
C-110.txt

$ cat input.txt
B-100.txt
B-11.txt
A-03.txt
A-01.txt
C-110.txt
C-10.txt
    
por 08.12.2016 / 01:41

Tags