Как конвертировать абсолютный путь в относительный в Linux
Я хотел бы знать, как абсолютный путь символической ссылки может быть преобразован в относительный на основе заданного каталога (который включает связанный файл) на языке c в ОС Linux (Ubuntu).
Я думал, что поиск подстроки относительного пути, но что, если он уже существует выше в иерархии папки?
Вот более конкретное описание того, что я хочу сделать: Относительный путь:
folder/folder1/folder2
Абсолютный путь:
/home/giorgos/Desktop/folder/folder1/folder2/a.pdf
изменился на
/home/giorgos/Desktop/myfolder/folder1/folder2/a.pdf
Очевидно, я не могу просто найти и заменить «folder /», рассмотрим этот случай:
/home/giorgos/Desktop/folder/folder/folder/folder1/folder2/a.pdf
Его можно искать как в прямом, так и в обратном направлении, и если его заменить, он все равно дает неправильный вывод. Только если бы я знал относительный путь, я мог бы искать абсолют и назад и заменить его, тогда вывод был бы правильным:
/home/giorgos/Desktop/folder/myfolder/folder/folder1/folder2/a.pdf