user561333 Asked:2023-07-22 02:48:11 +0800 CST2023-07-22 02:48:11 +0800 CST 2023-07-22 02:48:11 +0800 CST Linux命令以树形显示目录结构 772 我可以从 Bash 脚本调用任何 Linux 命令,该命令会将目录结构打印为树状结构,如下所示: dir1 aa.txt bb.txt dir2 dir3 ... linux 1 个回答 Voted Best Answer 15 редакцийuser561333 2023-07-22T03:24:16+08:002023-07-22T03:24:16+08:00 Bash 脚本使用程序tree在存储库的根目录创建一个 Markdown 文件,并包含指向其对象的链接。生成的文件可方便地用于在 Web 界面中导航存储库。 #!/bin/bash echo "Построение дерева каталогов со ссылками." { echo "## Дерево каталогов" echo echo "<pre>" tree -nvf --dirsfirst -I "*.gem|*.lock|*.zip|_site*" --noreport echo "</pre>" } >DIRECTORY-TREE.md sed -i -e "s/\xC2\xA0/ /g" -e "s/ / /g" -e "s/──/─/g" DIRECTORY-TREE.md find . -mindepth 1 -type f,d | sort -r | while read -r file; do echo "Обработка: \\$file >> ${file#*/} >> ${file##*/}" sed -i "s|\\$file|<a href='${file#*/}'>${file##*/}<\/a>|g" DIRECTORY-TREE.md done 截屏 算法描述 1. 我们执行程序tree并获取文本形式的目录树,其中对于每个文件,我们指定存储库根目录下的 Linux 路径的完整前缀。我们在文件之前显示文件夹并应用字母数字排序。我们排除不应位于存储库中的文件和文件夹。生成的树被放置在一个块中<pre>并添加一个标题。 2、为了美观,我们将画盒树的框架树枝剪短了。为了替换子字符串,我们使用程序sed和正则表达式。将不间断空格替换U+00A0为常规空格。让我们一步步创建一个文件DIRECTORY-TREE.md。 3.接下来,我们执行程序find并获取Linux文件和目录的列表,按照从最长路径到最短路径的相反顺序对该列表进行排序,即嵌套文件将位于其目录的前面,这样只有部分路径无法被替换。然后,它遍历排序列表,并将结果树中的 Linux 相对路径替换为标记中的相对 HTTP 链接<a>和链接视图中的文件名。 DIRECTORY-TREE.md4. 我们获得存储库 Web 界面的文件- Markdown 转换为 HTML。
Bash 脚本使用程序
tree
在存储库的根目录创建一个 Markdown 文件,并包含指向其对象的链接。生成的文件可方便地用于在 Web 界面中导航存储库。tree
并获取文本形式的目录树,其中对于每个文件,我们指定存储库根目录下的 Linux 路径的完整前缀。我们在文件之前显示文件夹并应用字母数字排序。我们排除不应位于存储库中的文件和文件夹。生成的树被放置在一个块中<pre>
并添加一个标题。sed
和正则表达式。将不间断空格替换U+00A0
为常规空格。让我们一步步创建一个文件DIRECTORY-TREE.md
。find
并获取Linux文件和目录的列表,按照从最长路径到最短路径的相反顺序对该列表进行排序,即嵌套文件将位于其目录的前面,这样只有部分路径无法被替换。然后,它遍历排序列表,并将结果树中的 Linux 相对路径替换为标记中的相对 HTTP 链接<a>
和链接视图中的文件名。DIRECTORY-TREE.md
4. 我们获得存储库 Web 界面的文件- Markdown 转换为 HTML。