是否可以将多个文件压缩到特定目录而不删除原始 gz 文件?

是否可以将多个文件压缩到特定目录而不删除原始 gz 文件?

我知道这可以针对单个文件完成,例如

gunzip -c my.gz > somedir/my

可以对多个文件执行此操作吗?

[更新] 我有一个包含大量 .gz 文件(不是 .tar.gz)的目录,我想将它们压缩到另一个目录中,同时保持原始文件不变。

答案1

尝试类似

for a in *.gz; do gunzip -c $a > somedir/`echo $a | sed s/.gz//`; done

答案2

这将在 bash 中工作

for FILE in *.gz
do
    echo -n "File $FILE... "
    gzip -c $FILE > ${FILE%.gz}
    echo "Done"
done

在 Andreja 的回答的基础上,添加了文件名的更正。

答案3

假设每个文件都有一个像

foo.bar.gz

basename(GNU coreutils 8.4)可以为您提供原始未压缩文件的名称,因此我会这样做

for f in /source/dir/*.gz; do t=$(basename $f .gz); gunzip -c $f > /target/dir/$t; done

答案4

听起来像是一份快速 perl/python/ruby/etc 脚本的工作。

只需调整此处的代码例子应用必要的 gunzip 命令。

相关内容