Обновите относительный путь до «частично» абсолютного пути в файлах .html

#bash #sh #relative-path #absolute-path

Вопрос:

Существует набор .html файлов, расположенных в разных папках. Допустим, структура такова:

 --folder
|--files.html
|--filename.html
--folder2
|--files.html
 

В files.html нем есть ссылка вроде href="filename.html" . На самом деле, когда вы видите такую ссылку, это означает, что filename.html она находится в той же папке, files.html что и ссылка на нее. Вместо этого href , href должно быть href="folder/filename.html" .

Там может быть большое количество папок и много файлов с такой ссылкой, и я не могу жестко закодировать имена.

Есть ли способ сканировать файлы и выполнять замену файлов с помощью bash?

Комментарии:

1. посмотрите find(1) на команду для рекурсивного поиска файлов и, возможно sed(1) , для редактирования файлов.

2. Вам не нужно вносить эти изменения. Если браузер отображает «folder/files.html», затем относительный URL «filename.html» будет относиться к «folder/filename.html». Какую проблему вы пытаетесь здесь решить?

3. Я не думаю, что в Bash есть простой способ сделать это. Лучше поищите программное обеспечение, разработанное специально для этой задачи.

4. Да, я согласен, что эта просьба противоречит природе. Но веб-сайт, на котором размещены эти htmls, не обрабатывает ссылки такого типа. Он ожидает увидеть шаблон, подобный href='folder/file.html' , даже если файлы находятся в одной папке

Ответ №1:

Перво-наперво: с простым HTML это будет невозможно. Вы можете написать сценарий оболочки для обновления files.html, но вы должны запускать это после каждой модификации дерева файлов. (Намекая вам на sed и ls -m (ПРАВКА: ls может быть , даже лучше, чем ls -m , потому что вам, вероятно, не нужна запятая между ними.))

Хотя есть варианты автоматизации создания списка файлов, но они требуют некоторых дополнений. Прежде чем подробно остановиться на них, не могли бы вы, пожалуйста, уточнить свой вопрос о следующих вещах?

Не могли бы вы, пожалуйста, добавить подробную информацию о веб-сервере? В зависимости от этого могут быть дополнительные опции. Видишь http://nginx.org/en/docs/http/ngx_http_autoindex_module.html, https://httpd.apache.org/docs/2.4/mod/mod_autoindex.html, и https://docs.microsoft.com/en-us/iis/configuration/system.webserver/directorybrowse.

В случае, если вы используете эти HTML-файлы без веб-сервера, как насчет javascript? Может ли это быть вариантом?

В общем: наверное, проще помочь вам решить оригинальную задачу, чем что-то настолько «абстрактное» и в данном случае «редкое». Было бы здорово узнать, что вы на самом деле пытаетесь решить, чтобы мы могли добраться до сути этого.