2017-08-10 96 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'遍历的每个子目录中执行。 –

相关问题