Поскольку «dir1
и dir2
являются произвольными путями», мы не можем рассчитывать на то, что они состоят из одного каталога (или из одного и того же количества каталогов ). Поэтому нам нужно преобразовать последнюю косую черту в именах путей во что-то, что не встречается больше нигде в имени пути. Предположим, что символ @
не встречается в ваших данных, вы можете отсортировать по базовому имени следующим образом:
cat pathnames | sed 's|\(.*\)/|\1@|' | sort -t@ -k+2 | sed 's|@|/|'
Первая команда sed
заменяет последнюю косую черту в каждом имени пути выбранным разделителем, вторая отменяет изменение. (Для простоты я предполагаю, что пути могут быть доставлены по одному на строку. Если они находятся в переменной оболочки, сначала преобразуйте их в один формат -на строку -.)
Немного поздно, но согласно документации формат BusID
"%d@%d:%d:%d", bus, domain, device, function
Я бы попробовал заменить первый :на @.
См. Часто задаваемые вопросы NVIDIA :"Каков формат идентификатора шины PCI?"