Linux 如何将filename.bz2.gz文件转换为filename.gz

Linux 如何将filename.bz2.gz文件转换为filename.gz,linux,gzip,Linux,Gzip,我有一堆文件名为filename.bz2.gz,我想将其转换为filename.gz 有什么帮助吗 谢谢你的文件名*.bz2.gz,我假设该文件是按照以下压缩顺序创建的: echo test | bzip2 | gzip -f > file.bz2.gz 这意味着无论出于何种原因,它都是一个gzip的bzip2文件。如果我的假设正确,您可以使用以下命令将其压缩更改为仅gzip: gunzip < file.bz2.gz | bunzip2 | gzip > file.gz

我有一堆文件名为filename.bz2.gz,我想将其转换为filename.gz

有什么帮助吗

谢谢你的文件名*.bz2.gz,我假设该文件是按照以下压缩顺序创建的:

echo test | bzip2 | gzip -f > file.bz2.gz
这意味着无论出于何种原因,它都是一个gzip的bzip2文件。如果我的假设正确,您可以使用以下命令将其压缩更改为仅gzip:

gunzip < file.bz2.gz | bunzip2 | gzip > file.gz

如果您只想重命名,请执行此操作

for i in `ls|awk -F. '{print $1}'`
do
    mv "$i".bz2.gz "$i".gz
done

我将通过以下方式改进Ajit的解决方案:

for i in *.bz2.gz; do
  i=${i%.bz2.gz}
  mv "$i.bz2.gz" "$i.gz"
done

使用glob而不是命令替代可以避免带有空格的文件名的分词问题。它还避免了额外的ls进程,这稍微更有效,特别是在像Cygwin这样进程分叉速度慢的平台上。出于同样的原因,awk命令可以替换为${parameter%[word]}语法。引用$i.gz和$i.gz的风格没有区别,只是个人喜好。

你所说的转换是什么意思?改名?你试过什么吗?mv file.b2.gz file.gz?当然,这只是一个更名。您必须先解压缩,再解压缩,然后重新-gzip.Hi bkail,修改后的解决方案非常好..:你能在这里解释一下globbing Charter的工作原理吗。我知道地球仪,但我从来没有这样用过。这里的o/p是直接的,但我想知道I=${I%.bz2.gz}的逻辑。只有*.bz2.gz部分是glob。${i%.bz2.gz}是参数扩展语法。在这一点上,我已经更新了答案,使之更加清晰,但是如果链接没有帮助,请告诉我。