Eine App zum Erstellen von Dateien und Ordnern aus einer vorgegebenen Struktur

Eine App zum Erstellen von Dateien und Ordnern aus einer vorgegebenen Struktur

Ich habe eine App für Mac namens Structurer gesehen (hier ein Videohttp://www.youtube.com/watch?v=kXRjneFTs6Q), was eine Struktur aus Dateien und Ordnern wie diese ergibt:

/folder1
/folder2
  /file1
  /folder2.1
    /file2.1

erstellt diese Dateien und Ordner an einem vorhandenen Ort.

Gibt es so etwas für Ubuntu, oder wie kann ich ein Shell-Skript erstellen, um so etwas zu erhalten?

Wenn möglich, wäre es auch cool, Dateien mithilfe von Vorlagen erstellen zu können.

Antwort1

Das Schwierige dabei ist, dass Dateien und Ordner auf die gleiche Weise angezeigt werden und es keine einfache Möglichkeit gibt, sie auseinanderzuhalten. Bei Datei 2.1 gibt es keine Möglichkeit zu erkennen, ob es /folder2/folder2.1/file2.1sich ( ) tatsächlich um einen Ordner oder eine Datei innerhalb von Ordner 2.1 handelt.

Ja, in Ihrer Beschreibung steht das Wort *file*, also wissen wir, dass Sie Datei meinen, aber wie könnte ein Programm das erkennen? Ein Programm kann Dateien von Pfaden unterscheiden, weil einem ein anderer Eintrag auf derselben Einrückungsebene folgt. ABER das führt zu einer Reihe komplizierter und verwirrender Regeln.

Ich würde vorschlagen, dass Sie ein Schlüsselwort oder nur vollständige Namen verwenden. Am einfachsten ist es:

/Ordner1/

/Ordner2/

/Ordner2/Datei1

/Ordner2/Ordner2.1/

/Ordner2/Ordner2.1/Datei2.1

Der abschließende Schrägstrich bedeutet „Dies ist ein Ordner und keine Datei.“ Dann können Sie mit einem einfachen Skript wie diesem Ihre Verzeichnisstruktur erstellen. Ein paar Warnungen zu diesem Skript.

  1. die Verzeichnisse der höheren Ebene müssen zuerst erstellt werden.
  2. Ich stelle dem Pfad einen „.“ voran, sodass alle erstellten Verzeichnisse relativ zu dem Verzeichnis sind, in dem das Skript ausgeführt wird.
  3. Ich führe keine Fehlerprüfung für den Inhalt der Verzeichnis-/Pfaddatei durch.
#!/bin/sh -v
#
# builds a directory and file structure.
# directories must exists before referenced or file in the directory declared.
#
# sample input looks like (without the leading #):
# /folder1/
# /folder2/
# /folder2/file1
# /folder2/folder2.1/
# /folder2/folder2.1/file2.1
#
# make sure we have our one and only input parameter.
if [ $# != 1 ]; then
        echo "Usage: `basename $0` input_file_name"
        echo "input_file_name contains absolute dir paths with a trailing slash,"
        echo "or absolute file path/name with no trailing slash."
        exit 1
fi

# get the file name from the command line
FILE=$1

# make sure the input parameter specifies a file.
if [ ! -e ${FILE} ]; then
        echo "Sorry, the file ${FILE} does not exist."
        exit 1
fi

for LINE in $(cat $FILE)
do
        LAST=$(echo ${LINE} | awk -F/ '{print $(NF)}')
        # if file ends with a slash, this value is blank, if it is no slash, this is the file name.
        if [ "${LAST}XXX" = "XXX" ]; then
                # is empty, so it is directory, future feature to check exist already
                mkdir ".${LINE}"
        else
                # is not empty, so it is a file
                touch ".${LINE}"
        fi
done
exit 0

Dadurch werden die Verzeichnisse und Dateien wie in der Eingabedatei angezeigt erstellt. Wenn das Skript aufgerufen wird create.shund Sie dies getan haben, generiert chmod 755 create.shder Befehl Ihre Verzeichnisse und Dateien wie in der Datendatei beschrieben../create.sh data

verwandte Informationen