Я хотел бы использовать сортировку GNU, чтобы имена файлов из команды find сортировались по номерам в имени. Имя файла - "цикл", затем первое число для сортировки, затем «.subset», затем второе число для сортировки, затем «.» затем третий номер для сортировки. Простая сортировка не работает, так как первое число может состоять из одной или нескольких цифр:

find /tmp/folder/ -name "cycle*"  | sort
/tmp/folder/cycle10.subset1.2
/tmp/folder/cycle11.subset1.2
/tmp/folder/cycle12.subset1.2
/tmp/folder/cycle1.subset1.2
/tmp/folder/cycle2.subset1.2
/tmp/folder/cycle3.subset1.2
/tmp/folder/cycle4.subset1.2
/tmp/folder/cycle5.subset1.2
/tmp/folder/cycle6.subset1.2
/tmp/folder/cycle7.subset1.2
/tmp/folder/cycle8.subset1.2
/tmp/folder/cycle9.subset1.2
[...]

Есть идеи?

2 ответа2

1
... | sort --debug -n -t/ -k4.6

--debug скажет вам, какой sort учитывает сравнение при выполнении своей работы.
Удалите это для фактического использования.

sort --help перечисляет доступные опции, man sort может рассказать больше.

0

Любой символ может быть разделителем полей:

-t, --field-separator=SEP
используйте SEP вместо непустого перехода к пустому

... | sort --debug -n -ty -k2.4
... | sort --debug -n -tl -k3.2
... | sort --debug -n -te -k3.1

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .