如何解压
.gz
指定文件夹中的所有档案而不删除?
我试过:
gunzip *.gz /folder
您可以简单地使用 man 中指定的 -k 选项。
-k --keep
Keep (don't delete) input files during compression or decompression.
例如,如果您使用命令
gunzip -k my_file.gz
my_file.gz 压缩或解压后不会被删除。
使用 gzip 解压缩到标准输出并将其通过管道传输到您所需的文件(因为 -k 选项对我也不起作用
gzip -dc somefile.gz > outputfile.txt
可以使用
bash
gzip
选项通过一些 --stdout
脚本来完成,并使用 bash 替换计算未压缩的名称:
for i in *.gz
do
echo unzipping $i to /folder/${i/.gz}
gunzip --stdout "$i" > "/folder/${i/.gz}"
done
当前的实现因文件名包含空格而失败。
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/
替换为点 (.
)。