循环解压文件

循环解压文件

我有以下代码,它从 netcdf 文件中提取数字,每个循环将它们放入另一个 netcdf 文件中。

mapfile Latitude < <(tr -s ' ' '\n' < final_ADCP_Saved.matLatitude.txt) #tr is transform from to -s is squeeze. So look in the text files for all the spaces and replace them by newline '/n'
mapfile Longitude < <(tr -s ' ' '\n' < final_ADCP_Saved.matLongitude.txt)

echo "length of Lat is ${#Latitude[@]}"
echo "length of Lon is ${#Longitude[@]}"

outputNumber="$(ls -lq *_??????.nc | wc -l)"

echo "the number of output netcdf fles is ${outputNumber}"

valueI=`cat I.txt`
valueJ=`cat J.txt`
arrI=($valueI)
arrJ=($valueJ)

for ((i=1; i<=outputNumber; i++)) 
do
        echo "geknoei$i.nc"
        ncrcat -C -F -d nj_u,${arrJ[i]},${arrJ[i+1]} -d ni_u,${arrI[i]},${arrI[i+1]} -v vel_u *_??????.nc gekneoi$i.nc 

done

由于空间问题,我不得不压缩输入文件,并且此代码不再有效。我想知道是否可以编写一个代码,在循环中解压缩一个文件(一次一个)提取我需要的内容,然后在循环结束时重新压缩它。

因此,大致如下:

mapfile Latitude < <(tr -s ' ' '\n' < final_ADCP_Saved.matLatitude.txt) #tr is transform from to -s is search. So look in the text files for all the spaces and replace them by newline '/n'
    mapfile Longitude < <(tr -s ' ' '\n' < final_ADCP_Saved.matLongitude.txt)

echo "length of Lat is ${#Latitude[@]}"
echo "length of Lon is ${#Longitude[@]}"

outputNumber="$(ls -lq *_??????.nc | wc -l)"

echo "the number of output netcdf fles is ${outputNumber}"

valueI=`cat I.txt`
valueJ=`cat J.txt`
arrI=($valueI)
arrJ=($valueJ)

for ((i=1; i<=outputNumber; i++)) 
do
        echo "geknoei$i.nc"
        gunzip *_??????.nc.gz
        ncrcat -C -F -d nj_u,${arrJ[i]},${arrJ[i+1]} -d ni_u,${arrI[i]},${arrI[i+1]} -v vel_u *_??????.nc gekneoi$i.nc
        gzip *_??????.nc 

done

问题是这会一次性解压缩所有文件,这会占用大量空间。如果我一次解压缩一个文件,我的 ncrcat 代码将不再工作,因为它从所有可用的 -unzipped- .nc 文件中提取。

如何一次解压缩一个 .nc 文件,同时仍使线路正常ncrcat -C -F -d nj_u,${arrJ[i]},${arrJ[i+1]} -d ni_u,${arrI[i]},${arrI[i+1]} -v vel_u *_??????.nc gekneoi$i.nc工作?

相关内容