У меня есть скрипт .sh
, который проходит через каждую папку в родительской папке и запускает program
в каждой.Я использовал следующий код:
for d in ./*/
do cp program "$d"
(cd "$d" ; ./program)
done
program
, помимо прочего, получает имя каждой папки и записывает его в файл data.dat
, чтобы все имена папок были там перечислены.Имена этих папок являются числами (десятичными), которые идентифицируют их содержимое.program
записывает имя папки в data.dat
при входе в каждую папку, чтобы они отображались в порядке, в котором Bash просматривает папки.
Я хочу, чтобы они были отсортированы, в data.dat
,в алфавитном порядке, поместив младшие числа перед более высокими, независимо от того, являются ли они однозначными или двузначными числами.Например, я хочу, чтобы 2.32
предшествовал 10.43
, а не наоборот.
Проблема, похоже, в том, что для Bash .
идет после чисел в порядке.Как я могу изменить это, чтобы прийти перед цифрами?
Заранее спасибо!
РЕДАКТИРОВАТЬ: program
в Fortran 77 и выглядит следующим образом:
`программа getData
implicit none
character counter*20, ac*4, bash*270, Xname*4, fname*15
double precision Qwallloss, Qrad, Nrad, Qth, QreacSUM
double precision Xch4in, Ych4in, length, porosity, Uin, RHOin
double precision MFLR, Area, Xvalue
integer I
bash="printf '%s\n'"//' "${PWD##*/}" > RunNumber.txt'
call system(bash) !this gets the folder name and writes
!to RunNumber.txt
open(21, form="FORMATTED", STATUS="OLD", FILE="RunNumber.txt")
rewind(21)
read(21,*) counter !brings the folder name into the program
close(21)
`
(...) `
call system(' cp -rf ../PowerData.dat . ')
open(27, form="FORMATTED", STATUS="OLD", ACCESS="APPEND", !the new row is appended to the existing file
1 FILE="PowerData.dat")
write(27,600) Counter, Xvalue, Nrad, Qrad, Qth, !writes a row of variables,
1 Area, MFLR, Uin, RHOin, Xch4in, Ych4in !starting with the folder name,
!to the Data file
close(27)
call system('cp -rf PowerData.dat ../')
end program`