408 Stimmen

Verzeichnis- und Dateistruktur mit Symbolen zur Darstellung in Markdown drucken

Ich möchte einen Linux-Befehl, um Verzeichnis- und Dateistrukturen in Form eines Baums auszudrucken, möglicherweise mit Unicode-Symbolen vor jeder Datei, und einen Hinweis für die beste Syntax, um die Ausgabe in ein Markdown-Dokument einzufügen, ohne Leerzeilen zwischen den Zeilen.

Beispiel:

.
 _config.yml
 _drafts
    begin-with-the-crazy-ideas. Textil
    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

26voto

John Byrne Punkte 539

Ich habe ein Node-Modul erstellt, um diese Aufgabe zu automatisieren: mddir

Verwendung

node mddir "../relativer/pfad/"

Zur Installation: npm install mddir -g

Um Markdown für das aktuelle Verzeichnis zu generieren: mddir

Um für einen absoluten Pfad zu generieren: mddir /absoluter/pfad

Um für einen relativen Pfad zu generieren: mddir ~/Dokumente/was_auch_immer.

Die MD-Datei wird in Ihrem Arbeitsverzeichnis generiert.

Ignoriert derzeit node_modules- und .git-Ordner.

Fehlerbehebung

Wenn Sie den Fehler 'node\r: Datei oder Verzeichnis nicht gefunden' erhalten, liegt das Problem darin, dass Ihr Betriebssystem unterschiedliche Zeilenenden verwendet und mddir sie nicht parsen kann, ohne dass Sie explizit den Zeilenendungsstil auf Unix setzen. Dies betrifft normalerweise Windows, kann jedoch auch einige Versionen von Linux betreffen. Das Festlegen von Zeilenenden auf Unix-Stil muss im globalen npm-Binordner von mddir durchgeführt werden.

Behebung von Zeilenenden

Holen Sie sich den npm Binordnerpfad mit:

npm config get prefix

Wechseln Sie in diesen Ordner

brew install dos2unix

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

Dadurch werden die Zeilenenden in Unix statt Dos umgewandelt

Führen Sie dann wie gewohnt aus: node mddir "../relativer/pfad/".

Beispiel für generierte Markdown-Dateistruktur '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

15voto

Ramtin Soltani Punkte 2670

Wenn Sie den Atom-Editor verwenden, können Sie dies mit dem ascii-tree Paket erreichen.

Sie können den folgenden Baum schreiben:

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

und ihn in das Folgende umwandeln, indem Sie ihn auswählen und Strg-Alt-t drücken:

root
 dir1
    file1
 dir2
     file2

9voto

guneysus Punkte 5747

Ich habe das für meine Dropbox-Dateiliste skriptet.

sed wird verwendet, um vollständige Pfade des symbolischen Links für den Datei-/Ordnerpfad nach -> zu entfernen

Leider gehen Registerkarten verloren. Unter Verwendung von zsh kann ich Registerkarten erhalten.

!/usr/bin/env bash

#!/usr/bin/env zsh

F1='index-2.md' # Mit 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'`             # Entferne den Symbolischen Link und ->

echo -e '```\n' ${DATA} '\n```' > $F1  # Markdown benötigt dreifache Backticks für

7voto

user3276552 Punkte 1034

Ich würde vorschlagen, wasabi zu verwenden, dann können Sie entweder das Markdown-ähnliche Gefühl wie dieses verwenden.

root/ # Einstiegskommentare können inline nach einem '#' stehen
      # oder in einer eigenen Zeile, ebenfalls nach einem '#'

  readme.md # ein Kind von 'root/', eingerückt
            # unter seinem Elternteil.

  usage.md  # Eingerückte Syntax ist gut für kleine Projekte
            # und kurze Kommentare.

  src/          # Verzeichnisse MÜSSEN mit einem '/' identifiziert werden
    fileOne.txt # Dateien benötigen keine Notation
    fileTwo*    # '*' kann ausführbare Dateien identifizieren
    fileThree@  # '@' kann Symlinks identifizieren

und werfen Sie diese genaue Syntax auf die js-Bibliothek für dieses

Beispiel für Wasabi

6voto

felix at housecat Punkte 306

Unter OSX, mit reveal.js, habe ich ein Rendering-Problem, wenn ich einfach tree benutze und dann den Output kopiere/einfüge: seltsame Symbole erscheinen.

Ich habe 2 mögliche Lösungen gefunden.

1) Verwenden Sie das Zeichensatz ascii und kopieren Sie einfach den Output in die Markdown-Datei

tree -L 1 --charset=ascii

2) Verwenden Sie direkt HTML und Unicode in der Markdown-Datei

.
⊢ README.md
⊢ docs
⊢ e2e
⊢ karma.conf.js
⊢ node_modules
⊢ package.json
⊢ protractor.conf.js
⊢ src
⊢ tsconfig.json
⌙ tslint.json

Ich hoffe, das hilft.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X