【问题标题】:Bash script that enters each directory and runs the script in that directory进入每个目录并在该目录中运行脚本的 Bash 脚本
【发布时间】:2019-09-17 08:35:08
【问题描述】:

我有一个 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

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

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

谢谢。

【问题讨论】:

    标签: unix


    【解决方案1】:

    也许循环find的结果:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-26
      • 1970-01-01
      • 2014-06-30
      • 1970-01-01
      • 2023-01-12
      • 1970-01-01
      相关资源
      最近更新 更多