tree
и получаем дерево каталогов в текстовом виде, где для
каждогофайла указываем полный префикс пути Linux от корня репозитория. Папки выводим перед файлами и
применяем буквенно-цифровую сортировку. Исключаем файлы и папки, которых не должно быть в репозитории.
Полученное дерево помещаем в блок <pre>
и добавляем заголовок.
sed
и регулярные выражения. Пробельные символы заменяем на пробелы. Пошагово
формируем файл DIRECTORY-TREE.md
.
find
и получаем список файлов и каталогов Linux, сортируем
этот список в обратном порядке от самого длинного пути до самого короткого, т. е. вложенные файлы будут перед
их каталогами, чтобы не получилось заменить только часть пути. Затем обходим отсортированный список и заменяем
в полученном дереве относительный путь Linux на относительную ссылку HTTP в теге <a>
и именем
файла в представлении ссылки.
DIRECTORY-TREE.md
для вёб-интерфейса репозитория — Markdown преобразованный в HTML.
" tree -nvf --dirsfirst -I "*.gem|*.lock|*.zip|_site*" --noreport echo "" } >DIRECTORY-TREE.md sed -i -e "s/ / /g" -e "s/ / /g" -e "s/──/─/g" DIRECTORY-TREE.md find . -mindepth 1 -type f,d -not -regex '.*\.\(gem\|lock\|zip\)\|.*/\(\.\|_site\).*' | sort -r | while read -r file; do echo "Обработка: \\$file >> ${file#*/} >> ${file##*/}" sed -i "s|\\$file|${file##*/}<\/a>|g" DIRECTORY-TREE.md done ```