GNU сортирует имена файлов с префиксом и одной или двумя цифрами

314
719016

Я хотел бы использовать сортировку 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 [...] 

Есть идеи?

0

2 ответа на вопрос

1
Hannu
... | сортировать --debug -n -t / -k4.6 

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

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

0
broomdodger

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

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

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

Похожие вопросы