Fortran,
ich es tun würde ein wenig anders, würde ich die Datei nicht in sich selbst sortieren. Nur wenn neue Dateien zu den Dateien nach der Sortierung hinzugefügt werden. hier ist das, was ich tun würde:
- mirrior die dir Baum, der eine 'output.txt' Datei hat und setzen die sortierte Datei dort
wie so:
#!/bin/bash
LIST=`find $1 -name output.txt`
for i in $LIST ; do
X=`dirname $i`
mkdir -p "sorted/$X"
sort "$i" -o "sorted/$i"
done
die oben braucht ein bisschen Polnisch, mkdir sollte ein 'wenn' um es herum und $ 1 sollte für die Gesundheit überprüft werden
gibt Ihnen dies:
Orignal:
mytest
mytest/ccc
mytest/ccc/f
mytest/ccc/f/output.txt
mytest/ccc/d
mytest/ccc/d/output.txt
mytest/ccc/e
mytest/ccc/e/output.txt
mytest/bbb
mytest/bbb/f
mytest/bbb/d
mytest/bbb/e
mytest/aaa
mytest/aaa/f
mytest/aaa/f/output.txt
mytest/aaa/d
mytest/aaa/d/output.txt
mytest/aaa/e
mytest/aaa/e/output.txt
Ausgang:
sorted
sorted/mytest
sorted/mytest/ccc
sorted/mytest/ccc/f
sorted/mytest/ccc/f/output.txt
sorted/mytest/ccc/d
sorted/mytest/ccc/d/output.txt
sorted/mytest/ccc/e
sorted/mytest/ccc/e/output.txt
sorted/mytest/aaa
sorted/mytest/aaa/f
sorted/mytest/aaa/f/output.txt
sorted/mytest/aaa/d
sorted/mytest/aaa/d/output.txt
sorted/mytest/aaa/e
sorted/mytest/aaa/e/output.txt
ein letztes, was ich die Art der Ausgabedatei denke an eine tmp-Datei writen und dann umbenannt, wenn die Art getan wird, da sonst die Ausgabedatei gestutzt könnte die Eingabedatei, bevor alles gelesen wurde. Wie seds Inplace-Option.
Sieht aus wie es funktioniert (wird eine Weile dauern, kann also nicht sicher sein). Ich hätte schwören können, dass ich etwas ähnliches versucht habe (ist das nicht immer so?) Wie auch immer du rockest. –
Können Sie wirklich verwenden, um dieselbe Ausgabedatei wie die Eingabedatei zu verwenden? Ich bezweifle das. – lothar
@lothar was auch immer Sie bezweifeln, es wird immer noch funktionieren: -p das Sortierprogramm liest die ganze Datei, sortiert die Zeilen im Speicher und schreibt dann die Ausgabe – fortran