我想解压缩.gz
文件但不覆盖。当生成的文件存在时,gunzip 将请求覆盖权限,但我希望 gunzip 默认情况下不覆盖并中止。我读过一个-f
强制覆盖的人,但我没有发现任何关于跳过它的信息。
gunzip ${file}
我需要类似-n
复制的东西cp -n ${file}
gunzip
在覆盖文件之前会提示您。您可以使用该yes
命令自动将n
字符串发送到gunzip
提示符,如下所示:
$ yes n | gunzip file*.gz
gunzip: file already exists; not overwritten
gunzip: file2 already exists; not overwritten
授予您的文件具有.gz
扩展名,您可以在运行之前检查文件是否存在gunzip
:
[[ -e ${file%.gz} ]] || gunzip "${file}"
[[ -e ${file%.gz}
]] 删除.gz
并检查具有其名称的文件是否存在。如果不是(假),||
将运行gunzip "${file}"
.
这是此处的答案的组合,这会将一组 gzip 压缩文件解压缩到不同的目标目录:
dest="unzipped"
for f in *.gz; do
STEM=$(basename "${f}" .gz)
unzipped_name="$dest/$STEM"
echo ''
echo gunzipping $unzipped_name
if [[ -e $unzipped_name ]]; then
echo file exists
else
gunzip -c "${f}" > $unzipped_name
echo done
fi
done