我正在尝试压缩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
谢谢!
答案 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"