Як сортувати ls колонку в Ubuntu через трубопровід для сортування?


6

Я новачок у Linux, намагаючись дізнатися, як працює термінал Ubuntu. Я намагався сортувати за розміром файлу:

ls -al | sort -k5

Файли вказані в такому порядку:

drwx------ 19 min10 domain users      0 2010-10-07 12:38 .
drwx------ 29 min10 domain users      0 2010-02-16 22:30 MSI
drwx------  2 min10 domain users      0 2009-11-25 19:53 www
drwx------  2 min10 domain users      0 2010-02-05 09:14 .cache
drwx------  2 min10 domain users      0 2010-03-02 08:11 My Pictures
drwx------  2 min10 domain users      0 2010-03-02 10:41 regu
drwx------  2 min10 domain users      0 2010-03-31 13:08 elec
drwx------  2 min10 domain users      0 2010-04-10 21:43 temp
drwx------  2 min10 domain users      0 2010-10-06 09:13 bubbla
drwx------  3 min10 domain users      0 2010-01-26 08:26 cfg
drwx------  3 min10 domain users      0 2010-03-30 15:34 data
drwx------  3 min10 domain users      0 2010-03-30 16:03 idv
drwx------  3 min10 domain users      0 2010-04-01 09:10 arduino-0018
drwx------  3 min10 domain users      0 2010-04-14 15:10 processing-1.1
drwx------  3 min10 domain users      0 2010-07-06 16:20 eclipse
drwx------  4 min10 domain users      0 2010-04-15 09:34 pryl
drwx------  4 min10 domain users      0 2010-07-06 16:30 dv2
-rwx------  1 min10 domain users    123 2010-10-07 12:38 starwars.txt
-rwx------  1 min10 domain users  16109 2010-10-06 07:01 .bash_history
-rwx------  1 min10 domain users 454656 2010-03-30 15:29 putty.exe
-rwx------  1 min10 domain users    504 2010-04-10 21:16 little.gif
-rwx------  1 min10 domain users  56682 2010-04-10 21:12 awesome.jpg
-rwx------  1 min10 domain users      7 2010-04-10 21:32 blah.txt

Це, очевидно, є невдачею з точки зору сортування за розміром файлу. Я спробував з купою інших стовпців на додаток до -k5, і неодноразово збиваються, виходять з ладу, результати. Я також намагався -nk5, та досі не ідуть. Що я роблю неправильно?


ls -al | sort -k5 працює для мене, ви можете редагувати у виході ls -al
Nifle

Гаразд, я зробив висновок завершеним. Дякую за Вашу відповідь.
mindy

Відповіді:


8

Вихід, який ви показуєте, сортується в алфавітному порядку замість чисельного. Спробуйте додати:

-n, --numeric-sort порівняти за чисельним значенням рядка

Редагувати: Я тільки що помітив, що у вашому виході стовпець розміру файлу є 6-м! ти намагався -nk6?

Випробувані на моїй Hardy Heron, ці роботи:

  • ls -al | sort -nk5
  • ls -al | sort -k5n
  • ls -al | sort -k5 -n
  • ls -al | sort -k5 --numeric-sort

sort --version виходи: 6.10


Дякую, Мартін. Чи відрізняється це від -nk5, що я вже намагався? Я просто спробував помістити -n в різні місця в команді, але це, здається, не змінилося.
mindy

@mindy: немає підказки, чому -n не буде працювати для вас. Спробуйте ще раз з -nk6? :-)
Martin

@Martin: Ви пропустили sort у ваших прикладах ( ls -al | -nk5і т.д.).
cYrus

@Martin: Також останній не працює, оскільки ви не вказуєте параметр для k.
cYrus

Ах, ви були праві. Я спробував-н, і я спробував -k6, але я не пробував їх обох разом. Тепер вона працює. Я не знаю, чому це шоста колона. Я вважаю п'ять. 1) Дозволи 2) Деякий номер 3) Ім'я власника 4) Назва групи 5) Розмір файлу
mindy

3

Для сортування за розміром спробуйте 'ls -S' або 'ls -rS'.


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