我想将存储在$ 2中的文件名压缩到指定目录,存储在$ 3中。例如,
if [-f $ 2];然后
gunzip $ 2
here I want to remove .gz from $2
mv $ 2 $ 3
网络连接
所以从终端命令行运行脚本时我输入:
-z anotherdirectory/test.txt user/harry
因为错误说mv:不能统计'backup / test.txt.gz':没有这样的文件或目录。
谢谢大家!!
答案 0 :(得分:1)
要删除单个扩展程序,请使用%
后缀删除操作符:
mv "${2%.*}" "$3"
或者如果您只想删除.gz
,可以使用:
mv "${2%.gz}" "$3"
但是你可以通过解压缩你希望它去的文件来完全避免复制:
gunzip -c "$2" > "$3"
-c
选项告诉gunzip
写入stdout。与普通gunzip
不同,它不会删除gzip文件,因此您之后必须rm
。
值得注意的是gunzip
了解其他扩展程序,例如tgz
;它会将foo.tgz
解压缩为foo.tar
,而不是foo
。因此,只删除扩展名的命令不适用于所有扩展名,而gunzip -c
则会。
答案 1 :(得分:0)
mv $(echo $2 |sed 's/\.gz$//') $3
另外,您应该查看tutorial about sed