Як сортувати вихід 'ls'?


14

Чи можливо переглянути цей вихід, відсортований за 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

3
Заголовок повинен бути більш конкретним, оскільки він виглядає як дублікат (що це все одно може бути).
Пітер Мортенсен

Відповіді:


31

Використовуйте перемикач -v [натуральний вид (версія) чисел у тексті]

ls -v

Якщо ви хочете отримати один стовпчик, використовуйте ls -1v
Vijay

13

Вихід сортується. За даними сторінки ls:

Сортуйте записи в алфавітному порядку, якщо не вказано жодного з -cftuvSUX або --sort.

Але якщо ви хочете піти далі, у вас є як мінімум два варіанти:

Варіант 1 - lsсортування комутаторів

man lsрозповідає про ряд комутаторів, які можна використовувати для сортування, зокрема, на сторінці ls man пише:

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

У вашому випадку потрібно "сортувати" версію (-v). Однак будьте обережні, оскільки це також буде сортувати все, що має blahblah-X.Y.Z-Aдомовленість, яка може бути не зовсім такою, яку ви хочете. Дивіться також пояснення GNU щодо сортування версій .

Варіант 2 - Труби до команд сортування

Ви можете використовувати трубу |для відправки виводу в іншу команду, наприклад команду, sort яку ви можете використовувати для сортування кількома іншими способами, як ls -1 | sort -nце корисно, якщо у вас є нумеровані файли. В -1комутатор гарантує , що вихід один-лінії кожного файлу.

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

Існує маса способів відповісти на подібне * питання. Вам може бути корисний підручник з оболонкою Linux.

* (Подивіться, що я там робив? :-P)


6

Як уже відзначалося в коментарях, вихід буде вже відсортований, але по символам, а не числом. Можливо, ви хочете подати висновок, 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, як цього уникнути.


1
Ви також можете передати вихід доcolumn
Девід Конрад

0

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

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.