Как отсортировать по номерам, которые являются частью имени файла в bash? - PullRequest
1 голос
/ 20 февраля 2020

Я пытаюсь назначить переменную в bash файлу в этом каталоге с наибольшим номером перед «.tar.gz», и я рисую полную пробел, чтобы найти лучший способ подойти к этому:

ls /dirname | sort   
daily-500-12345.tar.gz  
daily-500-12345678.tar.gz  
daily-500-987654321.tar.gz  
weekly-200-1111111.tar.gz  
monthly-100-8675309.tar.gz

1 Ответ

4 голосов
/ 20 февраля 2020
sort -Vrt - -k3,3
  • -V Естественная сортировка
  • -r Обратный, поэтому вы можете использовать head -1, чтобы получить только первую строку
  • -t - Использовать дефис как разделитель полей
  • -k3,3 Сортировка только по третьему полю

Вывод:

daily-500-987654321.tar.gz
daily-500-12345678.tar.gz
monthly-100-8675309.tar.gz
weekly-200-1111111.tar.gz
daily-500-12345.tar.gz
...