
У меня есть каталог с файлами с именами «1», «2»,..., «9», «10», «11», ..., «20», «21», ... внутри.
Могу ли я перечислить их в порядке «1», «2»,..., «9», «10», «11», ..., «20», «21», ...?
Я пробовал ls -ls
. Он не перечисляет файлы таким образом, а вместо этого "1", "10", "11", ..., "19", "2", "20", "21", .... Думаю, такая функция иногда будет полезна.
решение1
С GNU ls
(который есть в большинстве дистрибутивов Linux) вы можете использовать ls -v
, где -v
, со man
страницы
-v natural sort of (version) numbers within text
решение2
GNU ls -v
уже упоминалось, но для других команд, если ваша оболочка — zsh
, вы можете повлиять на порядок раскрытия подстановочных знаков с помощью квалификаторов подстановки.
Например:
printf '%s\n' *(om)
Выводит список файлов, отсортированных по mвремени создания (от самых новых к самым старым), *(Om)
для обратного порядка сортировки (от самых старых к самым новым).
*(n)
отсортирует файлы по номерам. Так что если вы ls
не GNU ls
, вы все равно можете сделать:
ls -fdl -- *(n)
Чтобы отсортировать список по номерам.