classificando arquivos no linux

1

Eu tenho vários arquivos em um diretório que eles têm dígitos numéricos antes de suas extensões. como abaixo:

  • SHG_PS_RG_10.tif
  • ABC_MFCL_NHG_PS_RG_af_04.tif
  • SHG_PS_RG_af_01.tif
  • CBC_MFCL_NHG_PS_RG_af_03.tif

etc. Eu quero classificá-los com o numérico (01,03,04 etc) como abaixo:

  • SHG_PS_RG_af_01.tif
  • CBC_MFCL_NHG_PS_RG_af_03.tif
  • ABC_MFCL_NHG_PS_RG_af_04.tif
  • SHG_PS_RG_10.tif

Como posso fazer isso?

    
por Jamal 22.02.2017 / 11:36

1 resposta

1

nifle@megamart ~/tmp
$ echo "SHG_PS_RG_10.tif
  ABC_MFCL_NHG_PS_RG_af_04.tif
  SHG_PS_RG_af_01.tif
  CBC_MFCL_NHG_PS_RG_af_03.tif" > foo.txt

nifle@megamart ~/tmp
$ awk -F "_" '{print $NF,$0}' foo.txt  | sort -n | cut -f2- -d' '

SHG_PS_RG_af_01.tif
CBC_MFCL_NHG_PS_RG_af_03.tif
ABC_MFCL_NHG_PS_RG_af_04.tif
SHG_PS_RG_10.tif

Explicação

  • -F "_" diz ao awk que usamos '_' como separador de campos
  • $NF é awk'ish para o último campo 10.tif
  • $0 é awk'ish para toda a entrada SHG_PS_RG_af_01.tif
  • , então esse '{print $NF,$0}' imprime 10.tif SHG_PS_RG_10.tif

    Quando temos 10.tif SHG_PS_RG_10.tif , é fácil fazer sort -n e, em seguida, usamos cut -f2- -d' ' para imprimir apenas a segunda coluna.

por 22.02.2017 / 12:12

Tags