我经常markdown在这样一个复杂的目录结构中写我的笔记。
~/doc/doc.md
~/doc/math/linearAlgebra/linearAlgebra.md
~/doc/math/linearAlgebra/numericalAnalysis.md
~/doc/linux/tmux/tmux.md
~/doc/linux/newsbeuter/newsbeuter.md
Run Code Online (Sandbox Code Playgroud)
这个目录结构不断扩展,每个目录除了文件之外还有各种其他*.md文件。我有一个递归寻找一个shell脚本markdown files的父目录doc/,生成html和pdf文件使用pandoc。我还创建了一个doc.md文件(通过脚本),其中包含所有*.md文件的列表。目前我使用,
find ~/doc/**/*.md
Run Code Online (Sandbox Code Playgroud)
生成此列表。我想根据目录结构对它们进行排序,以便像这样阅读:
math
linearAlgebra
linearAlgebra.md
numericalAnalysis.md
linux
tmux
tmux.md
newsbeuter
newsbeuter.md
Run Code Online (Sandbox Code Playgroud)
如果fp=/home/user/doc/linux/tmux/tmux.md是文件的完整路径示例,则${${fp%/*.md}#/home/user/doc/}给我linux/tmux. 我可以进一步处理它以隔离linux和tmux等,但我不知道该算法创建的目录结构。我认为这将需要使用数组来存储每个文件的完整目录结构,然后对其进行排序。
如果 shell 脚本已经存在于此,请告诉我。否则,欢迎提供有关可能算法的指针。
如果您想要做的只是生成所有.md文件的漂亮格式化输出,则tree应该完全按照您的要求执行:
tree -P '*.md' /home/user/doc
Run Code Online (Sandbox Code Playgroud)
添加-A漂亮的线条,它还可以做一些有趣的事情,比如输出到 HTML/XML。