String Bash循环到gunzip文件并删除文件扩展名和文件前缀
我有几个.vcf.gz文件:String Bash循环到gunzip文件并删除文件扩展名和文件前缀,string,bash,shell,command-line,String,Bash,Shell,Command Line,我有几个.vcf.gz文件: subset_file1.vcf.vcf.gz subset_file2.vcf.vcf.gz subset_file3.vcf.vcf.gz 我想快速压缩这些文件并重命名它们(一次性删除子集和redudant.vcf扩展名并获取这些文件: file1.vcf file2.vcf file3.vcf 这是我尝试过的脚本: iFILES=/file/path/*.gz for i in $iFILES; do gunzip -k $i > /get/in/t
subset_file1.vcf.vcf.gz
subset_file2.vcf.vcf.gz
subset_file3.vcf.vcf.gz
我想快速压缩这些文件并重命名它们(一次性删除子集
和redudant.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.删除前缀
子集
3.删除冗余扩展.vcf
只用一个命令是很难完成的
下面是一个修改版本。请小心尝试。我没有在我的计算机上彻底测试它
for i in /file/path/*.gz;
do
# get the output file name
o=$(echo ${i##*/} | sed 's/.*_\(.*\)\(\.[a-z]\{3\}\)\{2\}.*/\1\2/g')
gunzip -k $i > /get/in/this/dir/$o
done
因为您必须在输出路径名处执行三次操作 1.删除目录部分 2.删除前缀
子集
3.删除冗余扩展.vcf
只用一个命令是很难完成的
下面是一个修改版本。请小心尝试。我没有在我的计算机上彻底测试它
for i in /file/path/*.gz;
do
# get the output file name
o=$(echo ${i##*/} | sed 's/.*_\(.*\)\(\.[a-z]\{3\}\)\{2\}.*/\1\2/g')
gunzip -k $i > /get/in/this/dir/$o
done
我建议更改sed命令以显式地使用字符串“subset”(
s/subset\(.*)\(\.[a-z]\{3\})\{2\.*/\1\2/g
)来避免贪婪的*
文件名,包括下划线。是的,这是一个很好的建议。或者更改为sed's/[^a-z]\+\+\\\\++\.\.[[a-z]\{3\}}{2\\\.*/\1\2/g'
移动第一个前缀xi建议更改sed命令以显式使用字符串“subset”(s/subset\(.*)\)(\.[a-z]\{3\})\{2\}.*/\1\2/g
)以避免贪婪的*
文件名,包括下划线。是的,这是一个好建议。或者更改为sed's/[^\+++\\\\\\\\\\[[a-z]\\{3\\\\\\\\\\\\}{2}{.*/\1\2/g'
移动第一个前缀