如何在不删除的情况下进行压缩?

问题描述 投票:0回答:4

如何解压

.gz
指定文件夹中的所有档案而不删除?

我试过:

gunzip *.gz /folder

linux centos
4个回答
4
投票

您可以简单地使用 man 中指定的 -k 选项。

-k --keep
        Keep (don't delete) input files during compression or decompression.

例如,如果您使用命令

gunzip -k my_file.gz

my_file.gz 压缩或解压后不会被删除。


2
投票

使用 gzip 解压缩到标准输出并将其通过管道传输到您所需的文件(因为 -k 选项对我也不起作用

gzip -dc somefile.gz > outputfile.txt

1
投票

可以使用

bash
gzip
选项通过一些
--stdout
脚本来完成,并使用 bash 替换计算未压缩的名称:

for i in *.gz
do
   echo unzipping $i to /folder/${i/.gz}
   gunzip --stdout "$i" > "/folder/${i/.gz}"
done

当前的实现因文件名包含空格而失败。


0
投票
find /source/dir/ -type f -name '*.gz' \
  -exec bash -c 'gunzip -c "$0" > "/folder/${0%.gz}"' {} \;

此命令查找

*.gz
目录中的所有
/source/dir/
文件,并为每个文件执行 bash 命令。 bash 命令将文件 (
$0
) 解压缩到标准输出,并将结果重定向到
"/folder/${0%.gz}"
。后者是
"/folder/"
字符串与不带
.gz
扩展名的文件名连接。
${0%.gz}
表达式从字符串(路径)后面删除
.gz
的最短匹配。

并且

{}
序列将替换为下一个 gzip 压缩文件的路径。它作为第一个参数传递给 bash 命令 (
$0
)。

如果源目录是当前目录,请将

/source/dir/
替换为点 (
.
)。

© www.soinside.com 2019 - 2024. All rights reserved.