Как отсортировать вывод 'ls'?

Действительно ли возможно просмотреть этот вывод, отсортированный с titlepage_1.pdf перед titlepage_19.pdf?

$ ls
allTitlepage.pdf         titlepage_12.pdf  titlepage_19.tex  titlepage_26.pdf  titlepage_32.tex  titlepage_4.tex
allTitlepage.tex         titlepage_12.tex  titlepage_1.pdf   titlepage_26.tex  titlepage_33.pdf  titlepage_5.pdf
assignment.pdf           titlepage_13.pdf  titlepage_1.tex   titlepage_27.pdf  titlepage_34.pdf  titlepage_5.tex
assignment.tex           titlepage_13.tex  titlepage_20.pdf  titlepage_27.tex  titlepage_34.tex  titlepage_6.pdf
graphicsAssignment2.pdf  titlepage_14.pdf  titlepage_20.tex  titlepage_28.pdf  titlepage_35.pdf  titlepage_6.tex
graphicsAssignment2.tex  titlepage_14.tex  titlepage_21.pdf  titlepage_28.tex  titlepage_35.tex  titlepage_7.pdf
README.md                titlepage_15.pdf  titlepage_21.tex  titlepage_29.pdf  titlepage_36.pdf  titlepage_7.tex
thesisTitlepage.pdf      titlepage_15.tex  titlepage_22.pdf  titlepage_29.tex  titlepage_36.tex  titlepage_8.pdf
thesisTitlepage.tex      titlepage_16.pdf  titlepage_22.tex  titlepage_2.pdf   titlepage_37.pdf  titlepage_8.tex
titlepage_0.pdf          titlepage_16.tex  titlepage_23.pdf  titlepage_2.tex   titlepage_37.tex  titlepage_9.pdf
titlepage_0.tex          titlepage_17.pdf  titlepage_23.tex  titlepage_30.pdf  titlepage_38.pdf  titlepage_9.tex
titlepage_10.pdf         titlepage_17.tex  titlepage_24.pdf  titlepage_30.tex  titlepage_38.tex  titlepage_one.pdf
titlepage_10.tex         titlepage_18.pdf  titlepage_24.tex  titlepage_31.pdf  titlepage_3.pdf   titlepage_one.tex
titlepage_11.pdf         titlepage_18.tex  titlepage_25.pdf  titlepage_31.tex  titlepage_3.tex   titlepage_two.tex
titlepage_11.tex         titlepage_19.pdf  titlepage_25.tex  titlepage_32.pdf  titlepage_4.pdf
13
задан 7 October 2018 в 18:57

4 ответа

Используйте переключатель-v [естественный вид (версии) числа в рамках текста]

ls -v
30
ответ дан 23 November 2019 в 03:10

Вывод отсортирован. Согласно ls страница справочника:

Записи вида в алфавитном порядке, если ни один из-cftuvSUX, ни - вид не указан.

Но если Вы хотите пойти далее, у Вас есть по крайней мере две опции:

Опция 1 - ls переключатели вида

man ls говорит Вам о многих переключателях, что можно использовать для вида, а именно, в ls странице справочника говорится:

ни один (-U), размер (-S), время (-t), версия (-v), расширение (-X)

В Вашем случае Вы хотите вид "версии" (-v). Будьте осторожны, тем не менее, так как это также отсортирует что-либо, что имеет a blahblah-X.Y.Z-A расположение, которое не может быть полностью, что Вы хотите. См. также объяснение GNU вида версии.

Опция 2 - Каналы к сортировке команд

Вы могли использовать канал | отправить вывод в другую команду, например, команду sort в котором Вы могли использовать для вида многими другими способами, как ls -1 | sort -n который полезен, если Вы пронумеровали файлы. -1 переключатель гарантирует, что вывод является one-line-per-file.

Аналогичным образом, можно управлять выводом для помощи с сортировкой при помощи вещей как sed или awk.

Существует много способов ответить на этот вид* вопрос. Можно найти, что Linux окружает полезное учебное руководство.

* (См. то, что я сделал там? :-p)

13
ответ дан 23 November 2019 в 03:10

Как уже говорилось в комментарии, вывод уже отсортирован, но символами, не числами. Можно хотеть передать вывод по каналу ls через sort который имеет переключатель к виду числами в строках:

ls | sort --version-sort

Из страницы справочника:

-V, --version-sort
         natural sort of (version) numbers within text

Оборотная сторона: Когда мы выходим ls затем это производит файлы в таблице со столькими же столбцов сколько соответствие на текущем экране (точно так же, как Вы показали в своем сообщении). Но когда ls уведомления, что его вывод перенаправляется в файл или в канал (как в ls | sort) затем ls печатает файлы во всего одном столбце, потому что он затем предполагает, что вывод должен быть обработан линию за линией (иначе файл файлом) некоторой другой программой (как sort). Так вывод ls | sort -V будет в одном столбце вместо в таблице с несколькими столбцами. См. простой, но идеальный ответ @vijay для того, как избежать этого.

6
ответ дан 23 November 2019 в 03:10

ls -l : перечисляет файлы каталога по вертикали, но не в определенном порядке.

ls -l | sort -k 3 : -k 3 сортирует вывод предыдущей команды по 3-му столбцу.

0
ответ дан 26 December 2019 в 09:00

Другие вопросы по тегам:

Похожие вопросы: