1

У меня есть несколько файлов в каталоге, они имеют числовые цифры до их расширений. как ниже:

  • 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

так далее.. Я хочу отсортировать их по числовому (01,03,04 и т.д.), Как показано ниже:

  • 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

Как я могу это сделать?

1 ответ1

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

объяснение

  • -F "_" говорит awk, что мы используем '_' как разделитель полей
  • $NF не подходит для последнего поля 10.tif
  • $0 является недействительным для всего ввода SHG_PS_RG_af_01.tif
  • так что '{print $NF,$0}' печатает 10.tif SHG_PS_RG_10.tif

    Когда у нас есть 10.tif SHG_PS_RG_10.tif , легко выполнить sort -n а затем мы используем cut -f2- -d' ' чтобы распечатать только второй столбец.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .