我試圖在我的Fortran 90代碼中包含一個命令,將某個文件複製到備份位置。如果我只是複製文件,代碼會在bash中的一個班輪複製文件的數字附加到文件名
cp -f myfile.nml output/codebkp/myfile.nml
但我一直在尋找的東西,如果有以前的文件,可以鑑別。例如,如果該文件以前不存在,則將其複製到myfile.nml.00
。如果該目錄已經有一個myfile.nml.02
它將它複製到myfile.nml.03
等等。
它必須是一個班輪,因爲我把它放到我的Fortran代碼中,所以我被迫(我認爲)使用CALL SYSTEM()
聲明。
我能夠做到的最好的嘗試是一樣的東西
cp myfile.nml output/codebkp/myfile.nml.$((`ls output/codebkp/myfile.nml.* | awk '{print $NF}' | awk -F '.' '{print $NF}'`+1))
但是,這給了我時,有沒有文件中的錯誤(但令人驚訝的是還有種與錯誤的原理偶數),並且不工作了後兩個文件,給我這個錯誤
bash: 1
2+1: syntax error in expression (error token is "2+1")
任何想法?順便說一下,我在Fortran上這樣做,因爲我知道沒有更好的方法可以從那裏做到這一點。但是,如果有更好的方法來做到這一點,請與CALL SYSTEM()
聯繫,請讓我知道!
你不能(在Fortran語言的)根本與諮詢按文件名的圈,還是有一個是bash的? – francescalus
您可以編寫多行bash(或Python或其他)腳本並將其保存到文件中,然後使用fortran的單行命令調用該文件。 –
@francescalus我真的不知道fortran很好。我想我可以,但我只是不知道該怎麼做。我幾乎沒有使用fortran的經驗 – TomCho