我想要一个Linux命令以树的形式打印目录和文件结构,可能在每个文件之前使用Unicode图标,并提示在Markdown文档中包含输出的最佳语法,行之间没有空格。
例子:
.
├── _config.yml
├── _drafts
│ ├── begin-with-the-crazy-ideas. Textile
│ └── on-simplicity-in-technology. Markdown
├── _includes
│ ├── footer.html
│ └── header.html
├── _layouts
│ ├── default.html
│ └── post.html
├── _posts
│ ├── 2007-10-29-why-every-programmer-should-play-nethack.textile
│ └── 2009-04-26-barcamp-boston-4-roundup.textile
├── _data
│ └── members.yml
├── _site
└── index.html
我创建了一个节点模块来自动化这个任务:mddir
使用
mddir“../亲戚/路径/”
安装方法:npm install mddir -g
为当前目录生成降价:mddir
为任何绝对路径生成:mddir /absolute/path
生成一个相对路径:mddir ~/Documents/whatever。
md文件将在您的工作目录中生成。
目前忽略node_modules和.git文件夹。
故障排除
如果你收到错误'node\r: No such file or directory',问题是你的操作系统使用了不同的行结束符,如果你没有显式地将行结束符样式设置为Unix, mddir无法解析它们。这通常会影响Windows,但也会影响某些版本的Linux。将行结束符设置为Unix样式必须在mddir npm global bin文件夹中执行。
行结束修复
获取npm bin文件夹路径:
NPM配置获取前缀
Cd到那个文件夹里
酿造安装dos2unix
dos2unix lib / node_modules mddir / src / mddir js。
这将行结束符转换为Unix而不是Dos
然后正常运行:node mddir "../relative/path/"。
示例生成的降价文件结构'directoryList.md'
|-- .bowerrc
|-- .jshintrc
|-- .jshintrc2
|-- Gruntfile.js
|-- README.md
|-- bower.json
|-- karma.conf.js
|-- package.json
|-- app
|-- app.js
|-- db.js
|-- directoryList.md
|-- index.html
|-- mddir.js
|-- routing.js
|-- server.js
|-- _api
|-- api.groups.js
|-- api.posts.js
|-- api.users.js
|-- api.widgets.js
|-- _components
|-- directives
|-- directives.module.js
|-- vendor
|-- directive.draganddrop.js
|-- helpers
|-- helpers.module.js
|-- proprietary
|-- factory.actionDispatcher.js
|-- services
|-- services.cardTemplates.js
|-- services.cards.js
|-- services.groups.js
|-- services.posts.js
|-- services.users.js
|-- services.widgets.js
|-- _mocks
|-- mocks.groups.js
|-- mocks.posts.js
|-- mocks.users.js
|-- mocks.widgets.js
正如已经推荐的那样,您可以使用tree。但是要将它与重新构造的文本一起使用,需要一些额外的参数。
如果使用pandoc生成pdf,则不会打印标准树输出。
tree——dirsfirst——charset=ascii /path/to/directory将生成一个漂亮的ascii树,可以像这样集成到你的文档中:
.. code::
.
|-- ContentStore
| |-- de-DE
| | |-- art.mshc
| | |-- artnoloc.mshc
| | |-- clientserver.mshc
| | |-- noarm.mshc
| | |-- resources.mshc
| | `-- windowsclient.mshc
| `-- en-US
| |-- art.mshc
| |-- artnoloc.mshc
| |-- clientserver.mshc
| |-- noarm.mshc
| |-- resources.mshc
| `-- windowsclient.mshc
`-- IndexStore
|-- de-DE
| |-- art.mshi
| |-- artnoloc.mshi
| |-- clientserver.mshi
| |-- noarm.mshi
| |-- resources.mshi
| `-- windowsclient.mshi
`-- en-US
|-- art.mshi
|-- artnoloc.mshi
|-- clientserver.mshi
|-- noarm.mshi
|-- resources.mshi
`-- windowsclient.mshi
在OSX下,使用reveal.js,我有渲染问题,如果我只是用户树,然后复制/粘贴输出:奇怪的符号出现。
我找到了两种可能的解决方案。
1)使用字符集ascii并简单地复制/粘贴到markdown文件中的输出
tree -L 1 --charset=ascii
2)在markdown文件中直接使用HTML和unicode
<pre>
.
⊢ README.md
⊢ docs
⊢ e2e
⊢ karma.conf.js
⊢ node_modules
⊢ package.json
⊢ protractor.conf.js
⊢ src
⊢ tsconfig.json
⌙ tslint.json
</pre>
希望能有所帮助。