2017-08-10 56 views
1

所以我對編程還很陌生,剛開始在凝聚態物理中進行研究。我正在嘗試編寫一個bash腳本,它將在特定目錄中使用.txt文件,並在其上運行FFT程序,然後將新的.txt文件輸出到新目錄中。使用bash腳本在目錄中的每個文件上執行程序並輸出到不同的目錄

文件格式總是xxmT.txt,其中xx只是millitesla中的磁場的數字表示,所以就像0mT.txt,5mT.txt等等。正如你可以想象的那樣,可以有數百個數據文件生成,我希望他們是一種加快進程的方式。任何幫助是值得歡迎的,我寧願不通過終端文件來做這個文件。

回答

1

我希望這有助於:

#!/bin/bash 

cd "your_input_directory" 
for file in *mT.txt; do 
    your_FFT_program "$file" > "your_output_directory/$file" 
done 
+1

您可能希望包含'[-f「$ file」]'的測試,以防止在當前包含的任何子目錄中調用'your_FFT_program'。 (您可能還需要進一步區分*文件*和*符號鏈接*,在當前問題中未知,但值得一提)。 –

+0

這正是我所需要的,我只需要用我的FFT程序計算出一些錯誤。感謝您的幫助,非常感謝! –

1

您可以通過多個動作find命令。你的情況:

find . -name "*mT.txt" -execdir YOURCOMMAND "{}" ";" -execdir mv "{}" OUTPUTDIR ";" 

MV如果YOUCOMMAND成功纔會執行。

+0

'YOURCOMMAND'必須包含一個*絕對路徑*或在你的路徑中,因爲它將在'find'遍歷的每個子目錄中執行。 –

相關問題