在bash中添加额外的扩展名到特定文件

时间:2018-02-13 19:09:26

标签: bash shell gzip

我正在尝试压缩shell脚本中的文件并输出其前后压缩大小。到目前为止,我将文件名作为参数,使用gzip压缩文件,然后使用新文件名获取压缩大小。获取新的文件名我试图将.gz扩展名添加到现有文件名。

#!/bin/sh

#Name of the file input
NAME=$1

#Uncompressed size of the file input
UNCOMPRESSED=$(du -h $NAME | awk '{print $1}')

echo ""
echo "$NAME will be compressed using the gzip command."
echo ""
echo "gzip:"
echo "Uncompressed: $UNCOMPRESSED"

#Compress the file
GZNAME=$(gzip $NAME)

#Compressed size of the file input
COMPRESSED=$(du -h $GZNAME | awk '{print $1}')

echo "Compressed: $COMPRESSED"

如何将.gz扩展名添加到文件名中?我知道这不对,但也许像NEW_NAME = $($NAME + ".gz") 我所看到的每个地方都在取代现有的扩展,但我想保留现有的扩展。所以$NAME --> file.txt$NEW_NAME ---> file.txt.gz 谢谢!

1 个答案:

答案 0 :(得分:2)

默认情况下,

gzip会保留原始扩展名,默认情况下会添加.gz作为后缀。

$ echo "what" > 1.txt
$ gzip 1.txt
$ ls 1.txt.*
1.txt.gz

如果您想要.gz以外的任何其他内容作为扩展程序,请使用-S选项:

$ gzip -S .zip 1.txt
$ ls 1.txt.*
1.txt.zip

您对GZNAME=$(gzip $NAME)的分配是错误的。对于成功压缩,$GZNAME将为null。如果您使用默认的.gz扩展名,请使用

gzip "$NAME" && GZNAME="${NAME}.gz"