Могу ли я `ls` найти все файлы в каталоге из "1", "2",...,"9", "10", "11", ..., "20", "21", ...?

Могу ли я `ls` найти все файлы в каталоге из "1", "2",...,"9", "10", "11", ..., "20", "21", ...?

У меня есть каталог с файлами с именами «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)

Чтобы отсортировать список по номерам.

Связанный контент