Сортировка имен файлов по числовым полям (подстрокам) - PullRequest
0 голосов
/ 08 мая 2018

У меня есть набор файлов в папке A1 со следующим соглашением об именах:

MCU1_0001_01 
MCU2_0002_01 
MCU1_0001_02 
MCU2_0002_02
MCU1_0003_01
MCU2_0003_02

Четырехзначное значение в середине продолжает увеличиваться до значения 34, тогда как значение, которое следует после MCU, чередуется между 1 и 2, как и последние две цифры в конце строки.

Как говорится, Я хотел сначала отсортировать эти файлы по среднему значению, а затем по значению в конце строки. Обратите внимание, я также не заинтересован в сортировке значения, следующего за "MCU".

Как я могу это сделать?

это то, что я пытался

ls MCU[12]_00[0-9][0-9]_0[12] sort -t 

1 Ответ

0 голосов
/ 08 мая 2018

Разделение полей на _ и сортировка по полям 2 до 3:

$ ls | sort -t_ -k2,3
MCU1_0001_01
MCU1_0001_02
MCU2_0002_01
MCU2_0002_02
MCU1_0003_01
MCU2_0003_02

См. man sort для описания -t / --field-separator=SEP и -k / --key=KEYDEF.


Если ваши поля не заполнены нулями, вы хотите использовать -n для числовой сортировки:

sort -t_ -k2n -k3n

(сортирует по числовому значению второго поля, а затем по числовому значению третьего поля). Чтобы отладить, как sort интерпретирует поля, запустите с флагом --debug.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...