进入每个目录并在该目录中运行脚本的Bash脚本

时间:2019-09-17 00:28:55

标签: unix

我有一个bash脚本,可用于提取所需的一组数据,当我位于初始输入文件所在的目录中时,该脚本非常有用。

#!/bin/bash 
sed -n '/FIRST KEYWORD/,/KEYWORD THAT STOPS SEARCH/p' initial_input.out >  tmp1.dat
sed -n '/SECOND KEYWORD/,/KEYWORD THAT STOPS SEARCH/p' tmp1.dat > tmp2.dat
awk '/parameter name/' spintmp2.dat

有效地,我用sed剪切了所需的文件部分,然后使用awk获取与“参数名称”关联的行。我不立即执行awk的原因是因为字符串“参数名称”在initial_input.out文件中重复了很多次。

我的输出可能类似于

parameter name    25.3  18.0  4.0 
parameter name    4.3   51.3  54.0
parameter name    1.3   1.4   1.5

现在,我想对所有子目录中的每个初始输入文件执行此操作。例如,我在一个目录中,该目录包含名为“一个”,“两个”和“三个”的子目录,每个子目录都包含自己的初始输入文件(可以表示为* .out)。

如何知道当前输出来自哪个子目录,如何从当前目录运行此脚本并立即接收所有子目录的输出?

谢谢。

1 个答案:

答案 0 :(得分:1)

也许遍历find的结果:

find . -name "*.out" | while read path; do
    echo "The path is $path"
    # do stuff
done