Назад | Перейти на главную страницу

В Debian, какая команда вернет файл с «наименьшим» именем из каталога?

У меня есть каталог, содержащий три файла, например, 5.war, 6.war и 7.war.

Какая команда вернет файл с «наименьшим» именем из этого каталога? (В таком случае, 5.war.)

ls по умолчанию сортирует по имени. Если нет каталогов, с которыми нужно бороться, просто сделайте это:

ls | head -1

Чтобы добавить некоторую доработку, если вам нужно беспокоиться о каталогах, сделайте следующее:

ls -p | egrep -v /$ | head -1

К сожалению, ls сортирует имена файлов по алфавиту, что неверно для чисел. Например, 10.war воля перед 2.war, чего вы не желаете.

Возможно, вы найдете какой-нибудь более умный инструмент сортировки от Google, но в отсутствие этого я бы посоветовал:

  1. Если ваши файлы расположены в алфавитном порядке, решение @Hyppy идеально подходит для вас.
  2. Если они числовые, вместо head -1, Предлагаю числовую сортировку: ls|sort -n|head -1
  3. Если есть и то, и другое, вам нужно было найти какую-то альтернативу (на вашем месте я искал в Google более интеллектуальный инструмент сортировки).