Linux/Ubuntu neue datei aus wortliste erstellen

Hallo zusammen…
kann mir jmd helfen? Ich habe eine Textdatei : woerter.txt und da habe ich ca. 400 Namen untereinander (sind glaube aus einer excel datei herauskopiert worden) sieht in etwa so aus:
Tomas Meier
Peter
Dieter
Friedhelm Stein
usw…

nun möchte ich zu jedem Namen eine *.txt Datei erstellen … hab schon zich sachen mit grep und touch gepiped aber irgendwie bin ich zu dumm dafür :slight_smile:

möchte also folgendes erreichen :

Thomas Meier.txt
Peter.txt
Dieter.txt
Friedhelm Stein.txt
usw…

Habt ihr nen Tip für mich ?
LG Lars

ich verstehe deine frage irgendwie nicht und kann deswegen nicht helfen! Willst du in einer text datei bei jedem Namen ein txt dahinter haben oder 400 textdateien erstellen?

Steht doch da. Also 400 Textdateien.
Lösung hab ich allerdings auch nicht. Ich würde ein Programm dafür schreiben.
Gruß Michael

Hallo!

Versuch es mit einem Shell-Script:

IFS=$'\n'

for i in $( cat woerter ); do
    j="${i// /_}.txt"
    echo "Creating $j"
    touch $j
done

das du dann z.B. mit bash createFiles.sh ausführst.

Erklärung:

cat woerter liest die Datei woerter

for i in $( cat woerter ); do ist der Beginn einer FOR-Schleife, die über das, was der cat-Befehl liefert, läuft.

Dummerweise würde die Schleife über jedes einzelne Wort laufen, aber es soll ja über die Zeilen laufen. Mit IFS=$'\n' wird zuvor festgelegt, daß nur Zeilenumbrüche als Trenner in der Liste der Wörter benutzt werden, so daß das mit den Vor- und Nachnamen klappt.

${i//A/B} liefert den Inhalt der Variablen i zurück, ersetzt dabei aber alle A gegen B.
j="${i// /_}.txt" erzeugt also eine neue Variable j, bestehend aus der jeweiligen Zeile aus der Datei, wobei alle Leerzeichen gegen Unterstriche ersetzt werden. (Muß man nicht, aber Leerzeichen in Dateinamen sind auf der Kommandozeile immer etwas umständlich)

touch $j erstellt die Datei.


Die Ausgabe des Scriptes lautet bei mir:

Creating Tomas_Meier.txt
Creating Peter.txt
Creating Dieter.txt
Creating Friedhelm_Stein.txt

und ein ls:

createFiles.sh  Dieter.txt  Friedhelm_Stein.txt  Peter.txt  Tomas_Meier.txt  woerter

Davon abgesehen kann man den gesamten Code natürlich in eine Zeile packen (Semikolon zwischen den Zeilen setzen!) und/oder direkt auf der Kommandozeile eingeben, aber der Umweg über ein Script ist übersichtlicher.

@sweber DU BIST DER HAMMER !!! so stell ich mir eine Antwort vor… da kann man auch fürs nächste mal was nachgucken und selber improvisieren… Da ich leider noch zu frisch mit Ubuntu/Linux dran bin (aber jeden Tag erstaunt bin über die Möglichkeiten, die „von Haus aus“ laufen) habe ich nicht damit gerechnet, das es so schnell geht…

über die Hilfe aller Beteiligten bin ich sehr dankbar und die Lösung von @sweber ist mit der Erklärung dran der Knaller…

Es lebe das „Internet“ mit solchen netten, hilfsbereiten Menschen…

vielen Dank u bis bald

ich verstehe es immer noch nicht was du machen willst, vielleicht erklärst du das in einem video?

sweber hat die Aufgabe hervorragend gelöst. Hätte ich wohl nicht (so schnell) hin bekommen.

Aus deiner Antwort entnehme ich, dass dir „Programmieren“ nicht geläufig ist.
Ich hätte für die Lösung des Problems ein (Java-) Programm aus ca 20 Zeilen geschrieben. Weil aber das Problem gelöst ist, ist mir der Aufwand dafür zu groß.
Gruß Michael