我有一个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)。
如何知道当前输出来自哪个子目录,如何从当前目录运行此脚本并立即接收所有子目录的输出?
谢谢。
答案 0 :(得分:1)
也许遍历find
的结果:
find . -name "*.out" | while read path; do
echo "The path is $path"
# do stuff
done