我有以下目录结构,其中包含某些感兴趣的文件,我必须使用awk对其进行计算/算术运算。
$ mkdir DP1/postProcessing/0/ DP2/postProcessing/0/ DP3/postProcessing/0/;
$ touch DP1/postProcessing/0/wallShearStress.dat DP1/postProcessing/0/wallShearStress_0.02.dat DP2/postProcessing/0/wallShearStress_0.dat DP2/postProcessing/0/wallShearStress_0.1.dat DP3/postProcessing/0/wallShearStress_0.05.dat DP3/postProcessing/0/wallShearStress_0.000012.dat
masterDir/;
$ tree masterDir/
masterDir/
├── DP1
│ └── postProcessing
│ └── 0
│ ├── wallShearStress_0.02.dat
│ └── wallShearStress.dat
├── DP2
│ └── postProcessing
│ └── 0
│ ├── wallShearStress_0.1.dat
│ └── wallShearStress_0.dat
└── DP3
└── postProcessing
└── 0
├── wallShearStress_0.000012.dat
├── wallShearStress_0.05.dat
└── wallShearStress.dat
预期产出
DP File_processed Ouput_value #Optional header
DP1 wallShearStress_0.02.dat <some result using AWK>
DP2 wallShearStress_0.1.dat <some result using AWK>
DP3 wallShearStress_0.05.dat <some result using AWK>
我的(非常基本的)尝试失败了,脚本只为找到的最后一个目录返回文件三次:
$ for i in $(find -type d -name "DP*"); do
> for j in $(find . -type f -name "wallShearStress*" | tail -n 1); do
> echo $j;
> awk 'NR == 3 {print $0}' $j; # this just for example ...
> # but I wanna do something more here, but no issue with that
> # once I can get the proper files into AWK.
> done;
> done;
./DP3/postProcessing/0/wallShearStress_0.05.dat
./DP3/postProcessing/0/wallShearStress_0.05.dat
./DP3/postProcessing/0/wallShearStress_0.05.dat
问题定义:我想,
- 首先,在每个目录中找到名为
wallShearStress*.dat
. 在哪里, - 感兴趣的文件应该在结尾处具有最高编号。(澄清一下,一个目录中存在多个
wallShearStress*.dat
文件,例如 forDP3
onlyDP3\postProcessing\0\wallShearStress_0.05.dat
应该被选择进行处理,因为它的优先级高于DP3\postProcessing\0\wallShearStress.dat
,类似 onlyDP1\postProcessing\0\wallShearStress_0.02.dat
并且DP2\postProcessing\0\wallShearStress_0.1.dat
应该被选择) - 使用 awk 对
wallShearStress*.dat
每个目录执行算术运算,并在/文件中输出如下masterDir
:.txt
.csv
问题
- 方法有什么问题?
- 有更好的方法吗?(请记住,问题在于获取正确的文件,而不是 AWK)。