2017-08-10 7 views
1

私はかなりプログラミングを初めて学び、凝縮物理学の研究を始めました。私は特定のディレクトリ内の.txtファイルを取得し、それらのFFTプログラムを実行し、新しいディレクトリに新しい.txtファイルを出力するbashスクリプトを作成しようとしています。bashスクリプトを使用してディレクトリ内のすべてのファイルに対してプログラムを実行し、別のディレクトリに出力します

ファイル形式は常にxxmT.txtです。ここで、xxはミリメートル単位の磁場の数値表現です。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

現在のディレクトリの下にあるサブディレクトリで 'your_FFT_program'を呼び出さないように、' [-f "$ file"] 'のテストを含めることができます。 (また、ファイル*と*シンボリックリンク*を区別する必要があるかもしれませんが、現在の質問では不明ですが、言及する価値があります)。 –

+0

これは私が必要としていたものです。私はFFTプログラムでいくつかのバグを解決する必要があります。助けてくれてありがとう、非常に感謝! –

1

あなたはfindコマンドに複数のアクションを渡すことができます。あなたのケースでは:YOUCOMMANDが成功した場合

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

MVにのみ実行されます。

+0

'YOURCOMMAND'には絶対パス*が含まれていなければなりません。パスには、' find'によってトラバースされた各サブディレクトリ内で実行されるパスが含まれている必要があります。 –

関連する問題