2016-11-18 67 views
-1

如何解压.gz指定文件夹中没有删除的所有档案?如何不删除gunzip?

我想:gunzip *.gz /folder

+0

运行'man gunzip'并阅读。 –

+4

我正在投票结束这个问题,因为它与编程无关。 – PeeHaa

+0

我试过'man gunzip'获得很多参数 – Goga

回答

0

可以使用gzip--stdout选择一些bash脚本来完成,并使用bash替代计算未压缩名称:

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

目前执行失败,包含文件名的空格

+0

为什么你再次解压到'gz'? – Goga

+0

我不知道。这是对'.gz'扩展名的替换。 –

+0

附近出现意外标记'语法错误' – Goga

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/

0

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

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

例如,如果您使用

gunzip -k my_file.gz 

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

+0

OP也想将未压缩的文件移动到另一个目录中 –

+0

好的,所以他可以使用tar而不是gzip或gunzip。 – Nic0

+0

使用焦油žfile.gz -C /目标/路径 – Nic0