我想自动创建一个带有目录树列表的markdown,以便在每个目录中的GitHub等在线存储库中显示。
因此,鉴于我将使用可以使用brew install tree
在MacOS X上安装的Linux tree
command(有关详细信息,请参阅here),我推出了此解决方案:
tree --dirsfirst --noreport -I README.md > README.md;sed -i '' '1s/^/```/' README.md;echo \ >> README.md; sed -i '' -e '$s/$/```/' README.md
第一个sed -i '' '1s/^/```/' README.md
位于```
字符前面的位置 - 有关支持的降价的详细信息,请参阅Mastering (Github) Markdown。
echo echo \ >> README.md;
正在添加换行符。请注意,我没有使用sed
等效sed -i '' -e '$a\' filename
,因为由于$a
模式(请参阅here),因此只会添加换行符。 / p>
上一个sed -i '' -e '$s/$/```/' README.md
正在向文件添加尾随```
。
tree
命令tree --dirsfirst --noreport -I README.md
将排除某些模式,首先放置目录,忽略报告文件和dir计数。
结果将类似于以下内容:
```.
├── bin
│ ├── Debug
│ │ ├── SampleLibrary.jar
│ │ ├── cooper.jar
│ │ ├── sugar.data.jar
│ │ ├── sugar.jar
│ │ └── swift.jar
│ └── Release
│ ├── SampleLibrary.jar
│ ├── cooper.jar
│ ├── sugar.data.jar
│ ├── sugar.jar
│ └── swift.jar
├── obj
│ ├── Debug
│ │ └── Android
│ │ ├── ClassLibrary2.elements.FilesWrittenAbsolute.txt
│ │ └── samplelibrary.jar
│ └── Release
│ └── Android
│ ├── ClassLibrary2.elements.FilesWrittenAbsolute.txt
│ └── samplelibrary.jar
├── ClassLibrary2.elements
└── ClassLibrary2.elements.user
```
您可以看到此降价README.md here。
此解决方案效率不高,并且仅限-I
tree
模式选项来过滤掉不需要的dirs(比如构建目录)或文件名等。此外它无法正常工作更新现有的README.md
降价。
该解决方案应该适用于MacOS X(其中sed与Linux上的有些不同)。
答案 0 :(得分:2)
获取源代码标记的一种方法是将所有内容缩进四个空格:
tree --dirsfirst --noreport -I README.md | sed 's/^/ /' > README.md
按照您的方式进行操作,在每个上添加```
的新的第一行和最后一行,我们可以这样做
tree --dirsfirst --noreport -I README.md |
sed '1s/^/```'$'\n''/;$s/$/'$'\n''```/' > README.md
在替换字符串中插入换行符是使用C样式转义完成的。或者,我们可以使用"$(printf '\n')"
:
tree --dirsfirst --noreport -I README.md |
sed '1s/^/```'"$(printf '\n')"'/;$s/$/'"$(printf '\n')"'```/' > README.md
这些都应该适用于Mac OS的sed。
使用GNU sed,它会更简单一些:
tree --dirsfirst --noreport -I README.md |
sed '1s/^/```\n/;$s/$/\n```/' > README.md
答案 1 :(得分:1)
看看this python module(我是作者)。
它动态生成描述性目录树,并且有如下的 Markdown 导出格式:
.
├──
example_folder\
│ ├──
first_subfolder\
一个文档文件夹
│ │ ├──
sub-sub1\
│ │ │ └── file3.sh
这是文件 3
│ │ ├──
sub-sub2\
│ │ │ └── file4.cpp
这是文件 4
│ │ └── random_file.rdm
文档化文件
│ ├──
second_subfolder\
_一个文档文件夹
│ ├── a_text_file.txt
一个文本文件
│ ├── my_javascript.js
这是文件 1
│ └── test.py
一个 python 脚本
└── README.md
主要自述\
当然还有一个 ASCII 码
.
├── example_folder\
│ ├── first_subfolder\ (a documented folder)
│ │ ├── sub-sub1\
│ │ │ └── file3.sh (this is file 3)
│ │ ├── sub-sub2\
│ │ │ └── file4.cpp (this is file 4)
│ │ └── random_file.rdm (a documented file)
│ ├── second_subfolder\ (a documented folder with no documented files)
│ ├── a_text_file.txt (a text file)
│ ├── my_javascript.js (this is file 1)
│ └── test.py (a python script)
└── README.md (The main readme)