BASH脚本-直接解压缩和删除gz文件

BASH脚本-直接解压缩和删除gz文件,bash,gzip,gunzip,Bash,Gzip,Gunzip,我需要执行两个解压缩:tar和内部gz。 下面是我在bash脚本中使用的代码: for filename in $path; do tar -xf $filename -C $untar/$num for nc_gz in `ls "$untar"/"$num"/*`; do gunzip $nc_gz done for nc in `ls "$untar"/"$num"/*`; do ... done do

我需要执行两个解压缩:tar和内部gz。 下面是我在bash脚本中使用的代码:

for filename in $path; do
    tar -xf $filename -C $untar/$num


    for nc_gz in `ls "$untar"/"$num"/*`; do
          gunzip $nc_gz

    done

    for nc in `ls "$untar"/"$num"/*`; do
          ...
    done
done
它的工作原理与预期的一样:每个tar包含N个gz归档文件,这些文件被解压缩和删除,同时保留内部未压缩的文件

但是,为了节省磁盘空间,我想一次解压缩一个gz

我试过这个:

for filename in $path; do
    tar -xf $filename -C $untar/$num
done    

for nc_gz in `ls "$untar"/"$num"/*`; do
    STEM=$(basename "${nc_gz}" .gz)
    gunzip -c $nc_gz > $untar/$num/$STEM

    nc="$untar"/"$num"/$STEM
    .....
    rm $nc
done
但是gunzip操作也保留了gz文件

如何编辑代码以实现目标


谢谢

您最好在“$untar”/“$num”/*中为nc_gz使用
;执行
而不使用反勾号或$(…)进行命令替换。您还应该在
$STEM
周围使用双引号。然而,这与你的问题无关。你的目标并不明确。普通的
gunzip“$nc_gz”
将删除
.gz
文件,并将内容解压到具有正确名称的A文件中。@JonathanLeffler我刚刚测试了第二个代码块,没有-c选项,它可以正常工作。是否删除该问题,或者你更愿意写一篇文章作为答案?@JonathanLeffler如果你愿意,你可以回答我的问题,这样我就可以把它选为最佳答案。这是一个火花来测试我的代码