【发布时间】:2018-02-13 19:09:26
【问题描述】:
我正在尝试在 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
谢谢!
【问题讨论】:
-
您希望变量
GZNAME包含什么?您为其分配了gzip $NAME的输出,但该命令(很可能)不会产生任何输出,并且GZNAME将为空。也就是说,除非您将gzip别名为gzip -v之类的东西,但即便如此,您也会收到整行输出,而不仅仅是 gzip 压缩的文件名。 -
new_name="${name}.gz"? -
@MikeHolt 我应该更好地命名,也许将其重命名为
GZIP会更有帮助。我本质上希望它只是压缩原始文件。它不应该返回任何东西,只创建那个 .gz 文件 -
@Cyrus 当我尝试得到
file.txt.gz: not found