如何自动创建目录树列表的 README.md markdown
How to automatically create README.md markdown of directory tree listing
我想自动创建带有目录树列表的 markdown,以便在每个目录中像 GitHub 一样显示在在线仓库中。
因此,考虑到我将使用 Linux tree
command that can be installed on MacOS X using brew install tree
(see 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)不存在时添加换行符。
虽然最后一个 sed -i '' -e '$s/$/```/' README.md
正在向文件添加尾随 ```
。
tree
命令 tree --dirsfirst --noreport -I README.md
将排除一些模式,将目录放在第一位,忽略报告文件和目录计数。
结果将类似于以下内容:
```.
├── 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
```
你可以看到这个markdown README.md here.
这个解决方案效率不高,它仅限于 tree
的 -I
模式选项来过滤掉不需要的目录(比如说构建目录)或文件名等。它也没有正常工作以更新现有的 README.md
markdown。
该解决方案应该适用于 MacOS X(其中 sed 与 Linux 上的解决方案存在一些差异)。
获取源代码标记的一种方法是将所有内容缩进四个空格:
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
这些应该都适用于 macOS 上的 sed。
使用GNU sed,会简单一些:
tree --dirsfirst --noreport -I README.md |
sed '1s/^/```\n/;$s/$/\n```/' > README.md
看看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)
在 VSCode 中创建您的 markdown 并从 Marketplace 添加 Ascii Tree Generator extension。
我想自动创建带有目录树列表的 markdown,以便在每个目录中像 GitHub 一样显示在在线仓库中。
因此,考虑到我将使用 Linux tree
command that can be installed on MacOS X using brew install tree
(see 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)不存在时添加换行符。
虽然最后一个 sed -i '' -e '$s/$/```/' README.md
正在向文件添加尾随 ```
。
tree
命令 tree --dirsfirst --noreport -I README.md
将排除一些模式,将目录放在第一位,忽略报告文件和目录计数。
结果将类似于以下内容:
```.
├── 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
```
你可以看到这个markdown README.md here.
这个解决方案效率不高,它仅限于 tree
的 -I
模式选项来过滤掉不需要的目录(比如说构建目录)或文件名等。它也没有正常工作以更新现有的 README.md
markdown。
该解决方案应该适用于 MacOS X(其中 sed 与 Linux 上的解决方案存在一些差异)。
获取源代码标记的一种方法是将所有内容缩进四个空格:
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
这些应该都适用于 macOS 上的 sed。
使用GNU sed,会简单一些:
tree --dirsfirst --noreport -I README.md |
sed '1s/^/```\n/;$s/$/\n```/' > README.md
看看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)
在 VSCode 中创建您的 markdown 并从 Marketplace 添加 Ascii Tree Generator extension。