For loop 在UNIX中使用for循环中的变量查找文件名
我有一些这种形式的文件:2014.144.09.27.56.0195.IU.SDV.00.BHZ.M.SAC,我想提取SDV,00,BHZ变量,以便找到这种形式的文件/POLEZEROFILES/SAC_PZs_IU SDV__BHZ_2014.112.19.50.00.00002599.365.23.59.999,使用这些变量。我使用这个forloop,对于每个“.SAC”文件,它都会找到相应的“SAC_PZs_”文件,文件名中有相同的变量For loop 在UNIX中使用for循环中的变量查找文件名,for-loop,awk,find,sh,filenames,For Loop,Awk,Find,Sh,Filenames,我有一些这种形式的文件:2014.144.09.27.56.0195.IU.SDV.00.BHZ.M.SAC,我想提取SDV,00,BHZ变量,以便找到这种形式的文件/POLEZEROFILES/SAC_PZs_IU SDV__BHZ_2014.112.19.50.00.00002599.365.23.59.999,使用这些变量。我使用这个forloop,对于每个“.SAC”文件,它都会找到相应的“SAC_PZs_”文件,文件名中有相同的变量 #!/bin/sh ALIST=(*SAC) fo
#!/bin/sh
ALIST=(*SAC)
for ((i=0;i<${#ALIST[@]};i++));do
A="${ALIST[i]}"
staname=`ls "$A" | awk -F"[_.]" '{print $8}'`
staXX=`ls "$A" | awk -F"[_.]" '{print $9}'`
stacomp=`ls "$A" | awk -F"[_.]" '{print $10}'`
B=`find ./POLEZEROFILES -name "SAC*_${staname}_*${stacomp}_*${staXX}*" -print`
echo "${A}" "${B}"
done
它输出2$B
:
/POLEZEROFILES/SAC_PZs_IU_RSSD_BHZ_10_2011.209.05.56.00.0000_2599.365.23.59.9999
/POLEZEROFILES/SAC_PZs_IU_RSSD_BHZ_00_2011.208.18.13.59.0000_2599.365.23.59.9999
第二个输出是正确的。
有人能解决这个问题吗?与您的问题无关,只是一般性的评论。在那些awk行中不需要
ls
echo
将很好地工作(正如willawk…新手说:“感谢您的所有更正!工作很好!”!
2014.144.09.27.33.0195.IU.RSSD.00.BHZ.M.SAC