2017-10-11 104 views
1

我想创建一个脚本,通过删除midle扩展名来重命名具有2个​​扩展名的文件。在谈到这一点,我发现这个伟大的主题: Extract filename and extension in Bash在bash中提取位置文件名和扩展名

有人张贴有这方面壳牌参数扩展:

~% FILE="example.tar.gz" 
~% echo "${FILE%%.*}" 
example 
~% echo "${FILE%.*}" 
example.tar 
~% echo "${FILE#*.}" 
tar.gz 
~% echo "${FILE##*.}" 
gz 

我的问题是关于上述声明:你怎么回应例子。 gz

谢谢

回答

1

你不能做一个操作;你需要使用临时变量。

$ ext=${FILE##*.} # ext=gz 
$ tmp=${FILE%.*} # Remove .gz 
$ echo "${tmp%.*}.$ext" # Remove .tar, then add .gz back 
1

你可以简单地实现它没有任何临时变量,结合正确的语句,使该两个部分你需要用一个.之间:

echo "${FILE%%.*}.${FILE##*.}"