Siduction Forum > Scripts & Kernelhacking (DE)

Verzeichnis aus Datei erzeugen

(1/2) > >>

cas:
Hallo,
ich muss häufig viele Verzeichnisse erzeugen. Das möchte ich automatisieren.
Die Namen der Verzeichnisse stehen in einer Textdatei namens 'toc.txt', zB

--- Code: ---Verz1
Verz2
Verz3
--- End code ---
oder auch in einer Zeile

--- Code: ---Verz1 Verz2 Verz3

--- End code ---

Solange die Verzeichnisnamen aus _einem_ Wort bestehen, kann ich

--- Code: ---mkdir $( cat toc.txt )

--- End code ---
eingeben.

Häufig sieht toc.txt aber so aus:

--- Code: ---Verz mit mehreren Worten
AnderesVerz aus versch Worten
--- End code ---

Wie kann ich also jede Zeile  als einen GesamtString ausgeben und diesen dem mkdir-Befehl übergeben?
Mit einfachen oder doppelten Anführungszeichen bin ich nicht weitergekommen.

Bis jetzt helfe ich mir so:

--- Code: ---"Verz mit mehreren Worten" "AnderesVerz aus versch Worten"
--- End code ---
dh die Namen werden mit Anführungszeichen eingeklammert und alles in einer Zeile.  Schliesslich wird mit Cut&Paste diese Zeile mkdir übergeben.
Ich hoffe, dass dies einfacher geht

Grüße, C

Geier0815:

--- Code: ---#!/bin/bash
IFS=$'\n'
for i in `sed "/*/p" < toc.txt`
do
    mkdir $i
done

--- End code ---

Als Beispiel mit sed, sollte aber auch mit cat gehen. Der Trick ist den InputFieldSeperator von "alle whitespaces" auf "Zeilenumbruch" zu setzen. Verfeinern in der Form das der Listenname übergeben werden kann und irgendwelche Rückmeldungen überlasse ich dir.

melmarker:
Und wat der @Geier0815 vergessen hat - ganz wichtig - den IFS wieder zurücksetzen nach der Verarbeitung - immer, ob man es grad braucht oder nicht - das muss in Fleisch und Blut übergehen, sonst schießt man sich damit früher oder später fürchterlich ins Knie. (Fragt nicht nach, ich weiss, wovon ich rede ... ;))

cas:
Besten Dank!

Sofern die Verzeichnisnamen mit Anführungszeichen eingeklammert sind, geht auch

--- Code: ---cat toc.txt | xargs mkdir
--- End code ---

Grüße, C

cas:

--- Quote from: melmarker on 2018/06/25, 22:25:48 --- IFS wieder zurücksetzen nach der Verarbeitung

--- End quote ---

Ich nehme an, dieses Zurücksetzen läuft per

--- Code: --- IFS=$' \t\n'

--- End code ---

habe gerade mal nachgesehen. Da scheint es mehrere falsche Möglichkeiten zu geben

Navigation

[0] Message Index

[#] Next page

Go to full version
Powered by SMFPacks WYSIWYG Editor