Frage von maxmeer, 20

mittels geschweifter Klammern mehrere dateien gleichzeitigt erstellen?

Einst wusste ich wie mittels geschweifter Klammern mehrer Dateien mit einem Befehl erstellt wurden. Leider, leider

touch {a,c}.txt oder touch {a...c}

funktioniert nicht. Aber irgendwie ging es. Wisst Ihr es?

Antwort
von Linuxhase, 1

Hallo

touch {a,c}.txt oder touch {a...c}

Wenn die Zahl der zu erstellenden Dateien sehr groß ist, dann kann es mit dem Kommando

for i in {1..8}; do touch $i; done

zu Problemen wegen der Inodes kommen, da wäre es dann so besser:

printf '%s ' {001..100} | xargs touch

Dabei ist die

001

der Wert mit dem

begonnen

werden sollund die

100

der höchste Wert, also die Anzahl bis

wohin

es gehen soll.

Ersetze einfach die Zahlen 001 und 100 durch eigene Werte. So kannst Du auch Millionen Dateien in einem Rutsch erstellen.

Ein anderer Weg, den ich bei stackexchange gefunden habe, wäre:

seq 10 | xargs touch

um zum Beispiel 10 Dateien aufsteigend zu erstellen.

Linuxhase

Expertenantwort
von guenterhalt, Community-Experte für Linux, 7

warum sollte

touch {a,b}.txt 

mit der Standard-Shell von Linux (bash)  nicht funktionieren ?
Ob diese Möglichkeit mit allen Shells enthalten ist, kann ich nicht sagen.
Mit der bash, der csh, der ksh und der zsh geht es.

Welche Fehler werden bei dir gemeldet? Hast du in dem betreffenden Directory auch die nötigen Rechte?

Antwort
von Linuxhase, 5

Hallo

mittels geschweifter Klammern mehrere dateien gleichzeitigt erstellen?

Keine Ahnung was Du mit den Klammern willst, aber mehrere Dateien erstellen ist doch einfach:

touch dat1 dat2 dat3 file1 file2 file 3 "Neue Datei 1" "Neue Datei 2" "usw."

Einst wusste ich wie mittels geschweifter Klammern mehrer Dateien mit einem Befehl erstellt wurden.

Du meinst doch nicht etwa eine Automatisierung also aufsteigend nummerierte Dateien?:

for i in $(echo 1 2 3 4 5 6 7 8; do touch ${i}; done

Linuxhase

Kommentar von barnim ,

Dein letztes Beispiel ist irgendwie wat krumm (Klammer-zu fehlt u.A.).

for i in {1..8}; do touch $i; done

waere dann funktionell ;)

P.S.: {1..8} kann man entsprechend mit {a..c} ersetzen.

Kommentar von Linuxhase ,

@barnim

Dein letztes Beispiel ist irgendwie wat krumm (Klammer-zu fehlt u.A.).

Ja, war wohl nicht genug konzentriert :-(

Linuxhase

Antwort
von dan030, 12

Einfach "touch datei1 datei2 datei3" o. ä. eingeben, ohne irgendwelche Klammerung. Dann funktioniert es.

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten