我想要一个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

这里有一个NPM模块:

npm dree

它允许您将目录树表示为字符串或对象。将它与命令行一起使用将允许您将表示保存在txt文件中。

例子:

$ npm dree parse myDirectory --dest ./generated --name tree

我建议你用山葵,然后你可以像这样用降价的感觉

root/ # entry comments can be inline after a '#'
      # or on their own line, also after a '#'

  readme.md # a child of, 'root/', it's indented
            # under its parent.

  usage.md  # indented syntax is nice for small projects
            # and short comments.

  src/          # directories MUST be identified with a '/'
    fileOne.txt # files don't need any notation
    fileTwo*    # '*' can identify executables
    fileThree@  # '@' can identify symlinks

然后把这个语法放到js库中

在OSX下,使用reveal.js,我有渲染问题,如果我只是用户树,然后复制/粘贴输出:奇怪的符号出现。

我找到了两种可能的解决方案。

1)使用字符集ascii并简单地复制/粘贴到markdown文件中的输出

tree -L 1 --charset=ascii

2)在markdown文件中直接使用HTML和unicode

<pre>
.
&#8866; README.md
&#8866; docs
&#8866; e2e
&#8866; karma.conf.js
&#8866; node_modules
&#8866; package.json
&#8866; protractor.conf.js
&#8866; src
&#8866; tsconfig.json
&#8985; tslint.json
</pre>

希望能有所帮助。

我遵循了另一个存储库中的示例,并将目录结构包装在一对三重反引号(' ' ')中:

```
project
│   README.md
│   file001.txt    
│
└───folder1
│   │   file011.txt
│   │   file012.txt
│   │
│   └───subfolder1
│       │   file111.txt
│       │   file112.txt
│       │   ...
│   
└───folder2
    │   file021.txt
    │   file022.txt
```