Bash循环到gunzip文件并删除文件扩展名和文件前缀



我有几个.vcf.gz文件:

subset_file1.vcf.vcf.gz
subset_file2.vcf.vcf.gz
subset_file3.vcf.vcf.gz

我想压缩这些文件并重命名它们(一次性删除subset_和冗余.vcf扩展名,然后获得这些文件:

file1.vcf
file2.vcf
file3.vcf

这是我尝试过的脚本:

iFILES=/file/path/*.gz
for i in $iFILES;
do gunzip -k $i > /get/in/this/dir/"${i##*/}"
done

由于您必须在输出路径名上进行三次操作

1.删除目录部分

2.删除前缀subset_

3.删除冗余扩展.vcf

只用一个命令很难完成。

以下是修改版本。小心试试。我没有在电脑里彻底测试。

for i in /file/path/*.gz;
do 
    # get the output file name
    o=$(echo ${i##*/} | sed 's/.*_(.*)(.[a-z]{3}){2}.*/12/g')       
    gunzip -k $i > /get/in/this/dir/$o
done

最新更新