我想创建一个脚本,通过删除midle扩展名来重命名具有2个扩展名的文件。参考这个,我找到了这个很棒的主题: Extract filename and extension in Bash
有人发布了关于shell参数扩展的内容:
~% FILE="example.tar.gz"
~% echo "${FILE%%.*}"
example
~% echo "${FILE%.*}"
example.tar
~% echo "${FILE#*.}"
tar.gz
~% echo "${FILE##*.}"
gz
我的问题是上述陈述:你如何回应 example.gz ?
由于
答案 0 :(得分:1)
你不能在一次手术中做到这一点;你需要使用临时变量。
$ ext=${FILE##*.} # ext=gz
$ tmp=${FILE%.*} # Remove .gz
$ echo "${tmp%.*}.$ext" # Remove .tar, then add .gz back
答案 1 :(得分:1)
你可以简单地在没有任何临时变量的情况下实现它,通过组合正确的语句,这些语句提供了你需要的两个部分,其中包含.
:
echo "${FILE%%.*}.${FILE##*.}"