Fortran,
Я бы сделал это немного по-другому, я бы не сортировал файл в себя. Просто добавьте что-нибудь новое в файлы после сортировки. вот что я бы сделал:
- отражает дерево каталогов с файлом 'output.txt' и помещает туда отсортированный файл
вроде так:
#!/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
все вышесказанное требует некоторой полировки, вокруг mkdir должно быть 'if', а $ 1 следует проверять на здравомыслие
дает вам это:
оригинальная:
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
Выход:
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
последнее, что мне кажется, выходной файл сортировки записывается в tmp-файл и затем переименовывается после завершения сортировки, иначе выходной файл может обрезать входной файл до того, как все будет прочитано. Как вариант с Sed.