web-dev-qa-db-ja.com

マークダウン構文でのディレクトリとファイル構造の表現

私のJekyllブログ記事のいくつかでディレクトリとファイル構造を説明したいのですが、Markdownはそのようなことを出力するためのきちんとした方法を提供しますか?

例えば、JekyllのWebサイトでこのリンクでを見ると、ディレクトリとファイルの構造が非常によくページに出力されていることがわかります。きちんと:

.
├── _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

上記の行ブロック文字はUnicode(ここでの回答で説明されているように)であると思いますが、マークダウンや違いがわからないブラウザがそれらを処理します。 Markdownがこれを行う何らかの方法を含み、それがおそらく上記のUnicode文字として出力されることを望んでいました。

149
Matt Rowles

Unicode文字が気になる場合は、ASCIIを使用して構造を構築することができます。

.
+-- _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

tree出力を選択した場合、これはANSIが使用する形式に似ています。

104
RobertKenny

私は 別のリポジトリ の例に従って、トリプルバッククォート(```)のペアでディレクトリ構造をラップしました。

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

あなたの例に非常に似たものを生成するために tree を使うことができます。出力が得られたら、それを<pre>タグでラップしてプレーンテキスト形式を維持できます。

30

この作業を自動化するためのノードモジュールを作りました。 mddir

使用法

ノードmddir "../relative/path/"

インストールするには:npm install mddir -g

現在のディレクトリにマークダウンを生成するには:mddir

絶対パス用に生成するには、次のように入力します。mddir/absolute/path

相対パス用に生成するには:mddir〜/ Documents/whatever。

Mdファイルが作業ディレクトリに生成されます。

現在、node_modules、および.gitフォルダは無視されます。

トラブルシューティング

'node\r:そのようなファイルまたはディレクトリがありません'というエラーが表示された場合、問題はオペレーティングシステムが異なる行末を使用していて、mddirが明示的に行末スタイルをUnixに設定しないと解析できないことです。これは通常Windowsだけでなく、Linuxのいくつかのバージョンにも影響します。改行コードをUNIX形式に設定するには、mddir npmグローバルbinフォルダ内で実行する必要があります。

行末修正

Npm binフォルダのパスを取得します。

npm config get prefix

そのフォルダにCd

インストールdos2unixを醸造しなさい

dos2unix lib/node_modules/mddir/src/mddir.js

これは、行末をDOSではなくUnixに変換します。

それから: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
19
John Byrne

すでに推奨されているように、treeを使用できます。しかし、それを再構成されたテキストと一緒に使うためには、いくつかの追加パラメータが必要でした。

標準のtreeの出力は、あなたがpandocを使ってpdfを作成している場合には印刷されません。

tree --dirsfirst --charset=ascii /path/to/directoryは、次のようにあなたの文書に統合できるNice 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
15
aronadaal

私はこれを私のDropboxファイルリスト用にスクリプト化しました。

sedは、->の後にくるシンボリックリンクファイル/フォルダパスのフルパスを削除するために使用されます

残念ながら、タブは失われています。 zshを使う私はタブを保存することができます。

!/ usr/bin/env bash

#!/usr/bin/env zsh

F1='index-2.md' #With hyperlinks
F2='index.md'

if [ -e $F1 ];then
    rm $F1
fi

if [ -e $F2 ];then
    rm $F2
fi

DATA=`tree --dirsfirst -t -Rl --noreport | \
    sed 's/->.*$//g'`             # Remove symlink adress and ->

echo -e '```\n' ${DATA} '\n```' > $F1  # Markdown needs triple back ticks for <pre>

# With the power of piping, creating HTML tree than pipe it
# to html2markdown program, creates cool markdown file with hyperlinks.

DATA=`tree --dirsfirst -t -Rl --noreport -H http://guneysu.pancakeapps.com`
echo $DATA | \
    sed 's/\r\r/\n/g' | \
    html2markdown | \
    sed '/^\s*$/d' | \
    sed 's/\# Directory Tree//g' | \
        > $F2

このような出力:

```
 .
├── 2013 
│   └── index.markdown
├── 2014 
│   └── index.markdown
├── 2015 
│   └── index.markdown
├── _posts 
│   └── 2014-12-27-2014-yili-degerlendirmesi.markdown
├── _stash 
└── update.sh 
```

[BASE_URL/](BASE_URL/)
├── [2013](BASE_URL/2013/)
│   └── [index.markdown](BASE_URL/2013/index.markdown)
├── [2014](BASE_URL/2014/)
│   └── [index.markdown](BASE_URL/2014/index.markdown)
├── [2015](BASE_URL/2015/)
│   └── [index.markdown](BASE_URL/2015/index.markdown)
├── [_posts](BASE_URL/_posts/)
│   └── [2014-12-27-2014-yili-degerlendirmesi.markdown](_posts/2014-12-27-2014-yili-degerlendirmesi.markdown)
├── [_stash](BASE_URL/_stash/)
├── [index-2.md](BASE_URL/index-2.md)
└── [update.sh](BASE_URL/update.sh)
* * *
tree v1.6.0 © 1996 - 2011 by Steve Baker and Thomas Moore
HTML output hacked and copyleft © 1998 by Francesc Rocher
Charsets / OS/2 support © 2001 by Kyosuke Tokoro
6
guneysus

OSXの下で、reveal.jsを使用して、私はちょうどtreeを使用してそれから出力をコピー/ペーストするならば、私はレンダリング問題を抱えています:奇妙なシンボルは現われます。

私は2つの可能な解決策を見つけました。

1)charset asciiを使用して、出力をコピーしてマークダウンファイルに貼り付ける

tree -L 1 --charset=ascii

2)マークダウンファイルで直接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>

それが役に立てば幸い。

5

Atomエディタを使用している場合は、 ascii-tree パッケージでこれを実現できます。

次の木を書くことができます。

root
+-- dir1
    +--file1
+-- dir2
    +-- file2

それを選択してctrl-alt-tを押すことで次のように変換できます。

root
├── dir1
│   └── file1
└── dir2
    └── file2
5
Ramtin Soltani

wasabi を使用することをお勧めします。その後、マークダウン風を使用することもできます。

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ライブラリで this に設定してください。

wasabi example

4
user3276552

VS Codeを使用している場合、これはファイルツリーを生成するための素晴らしい拡張機能です。 https://marketplace.visualstudio.com/items?itemName=Shinotatwu-DS.file-tree-generator

マークダウンに直接追加...

????quakehunter
 ┣ ????client
 ┣ ????node_modules
 ┣ ????server
 ┃ ┗ ????index.js
 ┣ ????.gitignore
 ┣ ????package-lock.json
 ┗ ????package.json
3
Will Ward

動的に生成したい場合は、 Frontend-md を使用することをお勧めします。使い方は簡単です。

1
Bruno Wego