2013-07-03 3 views
1

Имея выход LS какКак заказать вывод ls с помощью суффикса?

GGGG_3.0.3_98/ 
GGGG_3.0.3_d_100/ 
GGGG_3.0.3_d_101/ 
GGGG_3.0.3_d_99/ 
GGGG_3.0.4_104/ 
GGGG_3.0.4_105/ 
GGGG_3.0.4_106/ 
GGGG_3.0_87/ 
GGGG_3.0_89/ 
GGGG_3.0_90/ 
GGGG_3.0_91/ 
GGGG_3.0_92/ 
GGGG_3.0_93/ 
SSS_2.2.3_01/ 
SSS_2.2.3_02/ 
SSS_2.2.3_03/ 
TTT_2.8.3_29/ 

как получить элементы заказанного суффикса?

Также, есть ли какая-нибудь быстрая команда, которую я могу использовать, чтобы узнать, что 106 является последним суффиксом в этом примере?

Извините: не было ясно, что «Суффикс» в данном примере - это все, что соответствует окончательному подчеркиванию.

+4

Что такое суффикс? Все после окончательного подчеркивания? – chepner

+2

'ls | sort -n -k3,3 -t_' сделал бы это, за исключением некоторых каталогов, имеющих 3 подчеркивания ... – user000001

ответ

3
ls ... |awk -F'[_/]' '{f=$(NF-1)>f?$(NF-1):f}END{print f}' 

даст вам 106

сортировать суффиксом:

ls..|awk -F'[_/]' '{print $(NF-1), $0}'|sort -n|sed 's/.* //' 

отмечают, что

  • awk|sort|sed цепь не является необходимым, AWK может сделать это в одиночку, (по асорт/асорти). но он пришел первым, грязный (я знаю) и быстро.

  • Если у файла/имени файла есть место, возможно, он не работает. но это можно устранить. например используйте невидимый символ как разделитель.

+1

+1. моя идея точно ^^: напечатайте поле сортировки спереди и используйте сортировку. Ты подтолкнул меня на это! Я считаю, что это 'ls -1F', так что есть хвост'/'. Или что-то вроде 'ls -d * /'. –

+0

оба отличные спасибо! : D –

Смежные вопросы