在bash中提取位置文件名和扩展名
问题描述:
我想创建一个脚本,通过删除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?
谢谢
答
你不能做一个操作;你需要使用临时变量。
$ ext=${FILE##*.} # ext=gz
$ tmp=${FILE%.*} # Remove .gz
$ echo "${tmp%.*}.$ext" # Remove .tar, then add .gz back
答
你可以简单地实现它没有任何临时变量,结合正确的语句,使该两个部分你需要用一个.
之间:
echo "${FILE%%.*}.${FILE##*.}"