@D630 Danke, die Syntax muss ich noch verinnerlichen.
ls *.*
10.txt 11.txt 12.txt 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt 9.txt
p=(*.*)
u=( $(printf "%s\n" ${p[@]%.txt} | sort -g))
echo ${u[@]}
s=( $(printf "%s\n" ${p[@]} | sort -g))
echo ${s[@]}
for ((i=0; i<${#u[*]}; i++)); do echo echo ${s[i]} zu ${u[i]}; done >zz.txt
Erklärung: Jetzt habe ich die Eingangs Dateien in ein "p" Array eingelesen, sortiert, in ein "u" Array geschrieben, den Inhalt des Arrays verändert und in ein "s" Array geschrieben. Dann eine zz.txt Datei generiert die Befehle zur Transformation von "u" zu "s" enthält. Jetzt könnte ich den Inhalt von zz.txt kopieren bzw. verändern und anschließend ins Terminal kopieren und somit ausführen.
Anhang gefunden auf http://mandrivausers.org/index.php?/topic/21998-reading-a-text-file-line-by-line-with-bash/
Wie kann ich die Befehle von zz.txt direkt ins Terminal laden, so dass sie zeilenweise ausgeführt werden, so als hätte ich sie ins Terminal kopiert. Alle Versuche von mir schlugen fehl, weil die Bash sowie das Array, Leerzeichen und Zeilenvorschub als Trennungszeichen erkennen. Es wird nicht zeilenweise sondern wortweise geladen. Folgender Code führt die Zeilen der zz.txt aus:
while read line; do $line; done < zz.txt
Wie kann ich zz.txt zeilenweise in ein neues Array laden? So:
i=0; while read line; do t[i]="$line"; ((i++)); done < zz.txt
echo ${t[@]}
p.s. für Verbesserungen bin ich wie immer Ohr. Denn diese horchel ich gerne durch meine Morchel'n.
Das hier http://mywiki.wooledge.org/BashPitfalls ist sehr informativ, was die syntaktischen Fehler angeht.